- 浏览: 25919 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
cevin15:
jak&jin 写道 学习了,小强写的文章很不错~~ ...
使用过滤器Filter解决tomcat默认编码配置下的传值乱码 -
jak&jin:
学习了,小强写的文章很不错~~ ,保存起来再说
使用过滤器Filter解决tomcat默认编码配置下的传值乱码 -
aki319:
...
Html的一些小经验
框架用多了,也有些腻。虽然struts2,spring,hibernate,ibatis等等都是一些很优秀的框架。不过,发现很多框架的功能都没用到,感觉有些浪费啊!于是,想着是不是自己学习用过框架的思想,然后用传统的无框架来进行开发。
这两天利用路上两个小时的坐公车时间,思考了如何去开发dao层。总结如下:
1、使用模板模式来开发通用的JdbcTemplate,简单的写了下jdbc模板类
在这个模板类中数据库连接没有直接关闭的原因,是为了之后的事务管理。当然,模板类肯定不能只是这两个方法,具体可以参考spring的jdbctemplate来进行模板类的开发。
BaseDao是个接口,完成rs到bean的映射,代码如下:
2、其它dao层类使用JdbcTemplate来进行开发。下面举个简单的例子:
3、使用代理模式来进行事务的处理。下面是,关于业务代理类的代码,在里面进行了事务的开启,提交或者回滚。
这种代理方式,前提是代理对象必须是相应的接口的实现。如果代理对象没有接口的话,可以利用第三方包cglib来实现对象的代理。
以上纯粹只是个人的经验之谈,作为自己的小小的记录。如有错漏,望提出。完整的代码在附件中,包含了一个数据库链接池的包和cglib包。
这两天利用路上两个小时的坐公车时间,思考了如何去开发dao层。总结如下:
1、使用模板模式来开发通用的JdbcTemplate,简单的写了下jdbc模板类
public class JdbcTemplate<T> { /** * 查找表对象列表 */ @SuppressWarnings("unchecked") public List<T> query(String sql, Object[] args, BaseDao dao){ Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; List<T> list = new ArrayList<T>(); try { conn = DBUtils.getConnectionByC3P0(); ps = conn.prepareStatement(sql); if(args!=null){ for(int i=0; i<args.length; i++){ ps.setObject(i+1, args[i]); } } rs = ps.executeQuery(); while(rs.next()){ T obj = dao.rowMapper(rs); list.add(obj); } } catch (Exception e) { e.printStackTrace(); } finally{ try { if(conn.getAutoCommit()){ DBUtils.release(rs, ps, conn); }else{ DBUtils.release(rs, ps, null); } } catch (Exception e2) { e2.printStackTrace(); } } return list; } /** * 更新表对象 */ public void update(String sql, Object[] args){ Connection conn = null; PreparedStatement ps = null; try { conn = DBUtils.getConnectionByC3P0(); ps = conn.prepareStatement(sql); if(args!=null){ for(int i=0; i<args.length; i++){ ps.setObject(i+1, args[i]); } } ps.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } finally{ try { if(conn.getAutoCommit()){ DBUtils.release(null, ps, conn); }else{ DBUtils.release(null, ps, null); } } catch (Exception e2) { e2.printStackTrace(); } } } }
在这个模板类中数据库连接没有直接关闭的原因,是为了之后的事务管理。当然,模板类肯定不能只是这两个方法,具体可以参考spring的jdbctemplate来进行模板类的开发。
BaseDao是个接口,完成rs到bean的映射,代码如下:
public interface BaseDao<T> { public T rowMapper(ResultSet rs); }
2、其它dao层类使用JdbcTemplate来进行开发。下面举个简单的例子:
public List<SearchUpdate> findBySql(String sql, Object[] objs) { return jt.query(sql, objs, new BaseDao<User >() { public User rowMapper(ResultSet rs) { User user = new User (); try { user.setName(rs.getString("name")); user.setId(rs.getInt("id")); } catch (Exception e) { e.printStackTrace(); } return user; } }); }
3、使用代理模式来进行事务的处理。下面是,关于业务代理类的代码,在里面进行了事务的开启,提交或者回滚。
public class TransactionProxy implements InvocationHandler { private Object targetObject; public Object bind(Object targetObject) { this.targetObject = targetObject; return Proxy.newProxyInstance(targetObject.getClass().getClassLoader(), targetObject.getClass().getInterfaces(), this); } public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { TransactionManager tm = DBUtils.getTransactionManager(); tm.beginTransaction(); Object result = null; try { result = method.invoke(targetObject, args); tm.commitTransaction(); } catch (Exception e) { tm.rollBackTransaction(); } return result; } }
这种代理方式,前提是代理对象必须是相应的接口的实现。如果代理对象没有接口的话,可以利用第三方包cglib来实现对象的代理。
以上纯粹只是个人的经验之谈,作为自己的小小的记录。如有错漏,望提出。完整的代码在附件中,包含了一个数据库链接池的包和cglib包。
- 4Dao.zip (843.8 KB)
- 下载次数: 13
发表评论
-
shell的学习笔记
2013-08-17 13:02 681最近在找工作,前些天被问起shell的问题。发现这块真是自己的 ... -
jwebap,监控web应用的jdbc,http请求,java类
2012-12-05 18:11 748最近在用jwebap。一个用来检测web应用的jdbc链接,h ... -
Tomcat的一些琐事
2012-08-29 17:58 801记录一些tomcat相关的操作问题,备忘 Tomcat “指 ... -
MySql 根据某个字段合并某一列数据
2012-06-06 09:40 0查询语句 SELECT productId, GROUP_CO ... -
Spring框架用注解进行事务控制
2012-05-18 18:07 1302今天纠结了一天呀~~就为了个注解事务控制。 其实很久以前就用过 ... -
oracle.sql.CLOB 转 String
2012-04-27 18:24 1867最近在用oracle数据库,有个oracle.sql.CLOB ... -
对内容列表按英文字母进行排序
2012-01-12 16:45 2090实现对内容列表,比如说种类,地方名按英文字母进行排序。效果如下 ... -
web开发常用组件备忘
2011-11-15 18:49 1156分享一些web开发经常用到的组件,也给自己做个备忘。 1、K ... -
IndexWriter.DeleteDocument与IndexReader.DeleteDocument区别
2011-10-31 15:28 1076转自http://www.cnblogs.com/zengen ... -
J2EE数据验证的一些开发建议
2011-08-30 17:03 1606说在前面:非原创。 输入数据验证:虽然为了用户的方便,可以提 ... -
用cookie实现简单的单点登录功能
2011-08-10 17:35 2639看到篇博文,是关于单点登录的。 引用编写你自己的单点登录(SS ... -
使用oscache加速你的web程序
2011-06-28 15:31 1178网上找了一下关于web开发方面可使用的缓存技术,发现oscac ... -
Html的一些小经验
2011-06-15 14:03 827写篇文章记录一下做web过程的一些小经验。打算以后想到就补充这 ... -
使用过滤器Filter解决tomcat默认编码配置下的传值乱码
2011-06-08 13:56 2180最近又拿起jsp+servlet来做项目,遇到了乱码的问题。解 ... -
【转载】MySQL索引类型一览 让MySQL高效运行起来
2011-05-24 11:20 909在网上看到篇介绍MySql索引的文章,觉得不错。转到自己博客, ... -
Tomcat设置网页超链接默认打开映射
2011-05-17 10:42 1183Tomcat设置网页超链接默认打开映射,可以修改tomcat/ ... -
关于Spring的事务管理,基于XML
2011-04-02 14:45 914在Spring中常用的事务传播行为 PROPAGATION ... -
Linux下Tomcat相关的一些命令
2011-03-29 20:29 870启动tomcat: ./startup.sh 关闭tomc ... -
String 与 InputStream互相转换
2011-01-28 11:46 968String与InputStream互转 1. String ... -
MySql数据在控制台里的导入和导出
2010-12-16 10:35 1613在windows系统下需要进入mysql安装目录中的bin目录 ...
相关推荐
基于JSP+Servlet+JavaBean+JDBC+DAO的Web架构设计该系统,进一步了解并掌握如何对数据库进行操作,以及如何分析、设计一个应用系统。 需求要求: 该系统的基本需求是,系统要实现如下的基本管理功能: (1)用户分为...
1.8 小结 第2章 快速入门 2.1 实例功能概述 2.1.1 比Hello World更适用的实例 2.1.2 实例功能简介 2.2 环境准备 2.2.1 创建库表 2.2.2 建立工程 2.2.3 类包及Spring配置文件规划 2.3 持久层 2.3.1 建立领域对象 ...
1.8 小结 第2章 快速入门 2.1 实例功能概述 2.1.1 比Hello World更适用的实例 2.1.2 实例功能简介 2.2 环境准备 2.2.1 创建库表 2.2.2 建立工程 2.2.3 类包及Spring配置文件规划 2.3 持久层 2.3.1 建立领域对象 ...
该案例采用目前最流行、最规范的java ee架构,整个应用分为jpa实体层、eao层、业务逻辑层、mvc层和视图层,各层之间分层清晰,层与层之间以松耦合的方法组织在一起。该案例既提供了ide无关的、基于ant管理的项目源码...
总结,该例示注释非常详细,演示Spring托管Hibernate和Struts的Action, 以及Spring的事务声明(包括1.x与2.x的用法)与非事务声明的使用方式。 使用DWR可以方便的使用Spring托管的持久层功能。 目的:希望广大Java...
Web 应用中模板技术与 JSP 技术的对比 输入验证与数据绑定 异常处理 国际化支持 WebWork2 & Spring Quick Start WebWork 高级特性 Action 驱动模式 XWork 拦截器体系 输入校验 国际化支持 Webwork2...
第1章web应用开发简介 1 1.1何为web应用 1 1.1.1web的概念及发展 1 1.1.2web应用程序 2 1.2使用java开发web应用 3 1.2.1面向对象的编程语言 3 1.2.2丰富的框架技术 4 1.2.3xml、css的应用 4 1.2.4使用...
6.3 使用MyEclipse开发Web应用程序 86 6.3.1 创建Web项目 87 6.3.2 创建HTML静态页面 88 6.3.3 创建JSP页面 90 6.3.4 创建Servlet 91 6.3.5 创建Web项目中的Java类文件 92 6.3.6 发布和运行Web项目 94 6.4 Web应用...
JavaWeb数据库应用JavaWeb数据库应用开发的几种方式一、JSP+JDBC二、JSP+Servlet(+JDBC)三、JSP+Servlet+DAO(+JDBC)四、JSP+Servlet+DAO(+JDBC)+JavaBean JavaWeb数据库应用开发的几种方式 以下总结了课程中...
实验一 JSP+Servlet+Javabean+jdbc-基于MVC模式的数据库的应用 实验二 JSF+JPA实现用户注册 实验三 struts+spring+hibernate框架访问数据库的应用 实验四 使用WebService和EJBean访问数据库的应用
第八章 开发Web应用 142 8.1介绍 142 8.2 Web项目和术语 142 8.2.1 Java EE 中的Web项目结构 142 8.2.2 MyEclipse Web 项目介绍 144 8.3 创建Web项目 144 8.4 创建HTML页面 146 8.5 创建JSP页面 148 8.6 创建Servlet...
163 9.5 编写Struts整合Hibernate的分页应用 163 9.5.1 分页应用的设计思路 163 9.5.2 创建StrutsPageDemo项目,加入Hibernate开发功能 169 9.5.3 反向工程生成DAO层 169 9.5.4 编写分页应用层 170...
Web表现层:该层主要包括Spring MVC中的Controller类和JSP页面。 总结: 云借阅图书管理系统主要实现了两大功能模块:用户登录模块和图书管理模块,用户登录模块主要用于实现用户的登录与注销;图书管理模块主要...
1.1 java web应用概述 1.2 配置开发环境 1.3 基础技术简单简介 1.4 核心框架初步认识 1.5 小结 第2章 myedipse开发工具对各种框架的支持 2.1 使用jsp的两种模式 2.2 struts框架的实现 2.3...
4.4 创建和发布Web应用 4.4.1 创建和发布JSP应用程序 4.4.2 创建和发布Servlet应用程序 4.5 小结 第五章 Eclipse使用指南 5.1 Eclipse简介 5.1.1 Eclipse的历史 5.1.2 Eclipse的运行机制 5.2 建立Eclipse的开发环境 ...
4.4 创建和发布Web应用 4.4.1 创建和发布JSP应用程序 4.4.2 创建和发布Servlet应用程序 4.5 小结 第五章 Eclipse使用指南 5.1 Eclipse简介 5.1.1 Eclipse的历史 5.1.2 Eclipse的运行机制 5.2 建立Eclipse的开发环境 ...