- 浏览: 27887 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
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 790最近在找工作,前些天被问起shell的问题。发现这块真是自己的 ... -
jwebap,监控web应用的jdbc,http请求,java类
2012-12-05 18:11 852最近在用jwebap。一个用来检测web应用的jdbc链接,h ... -
Tomcat的一些琐事
2012-08-29 17:58 894记录一些tomcat相关的操作问题,备忘 Tomcat “指 ... -
MySql 根据某个字段合并某一列数据
2012-06-06 09:40 0查询语句 SELECT productId, GROUP_CO ... -
Spring框架用注解进行事务控制
2012-05-18 18:07 1428今天纠结了一天呀~~就为了个注解事务控制。 其实很久以前就用过 ... -
oracle.sql.CLOB 转 String
2012-04-27 18:24 1980最近在用oracle数据库,有个oracle.sql.CLOB ... -
对内容列表按英文字母进行排序
2012-01-12 16:45 2197实现对内容列表,比如说种类,地方名按英文字母进行排序。效果如下 ... -
web开发常用组件备忘
2011-11-15 18:49 1285分享一些web开发经常用到的组件,也给自己做个备忘。 1、K ... -
IndexWriter.DeleteDocument与IndexReader.DeleteDocument区别
2011-10-31 15:28 1185转自http://www.cnblogs.com/zengen ... -
J2EE数据验证的一些开发建议
2011-08-30 17:03 1712说在前面:非原创。 输入数据验证:虽然为了用户的方便,可以提 ... -
用cookie实现简单的单点登录功能
2011-08-10 17:35 2777看到篇博文,是关于单点登录的。 引用编写你自己的单点登录(SS ... -
使用oscache加速你的web程序
2011-06-28 15:31 1297网上找了一下关于web开发方面可使用的缓存技术,发现oscac ... -
Html的一些小经验
2011-06-15 14:03 926写篇文章记录一下做web过程的一些小经验。打算以后想到就补充这 ... -
使用过滤器Filter解决tomcat默认编码配置下的传值乱码
2011-06-08 13:56 2296最近又拿起jsp+servlet来做项目,遇到了乱码的问题。解 ... -
【转载】MySQL索引类型一览 让MySQL高效运行起来
2011-05-24 11:20 957在网上看到篇介绍MySql索引的文章,觉得不错。转到自己博客, ... -
Tomcat设置网页超链接默认打开映射
2011-05-17 10:42 1237Tomcat设置网页超链接默认打开映射,可以修改tomcat/ ... -
关于Spring的事务管理,基于XML
2011-04-02 14:45 952在Spring中常用的事务传播行为 PROPAGATION ... -
Linux下Tomcat相关的一些命令
2011-03-29 20:29 921启动tomcat: ./startup.sh 关闭tomc ... -
String 与 InputStream互相转换
2011-01-28 11:46 1009String与InputStream互转 1. String ... -
MySql数据在控制台里的导入和导出
2010-12-16 10:35 1678在windows系统下需要进入mysql安装目录中的bin目录 ...
相关推荐
根据提供的部分内容,我们可以进一步探讨如何利用Spring框架实现Web应用的开发: 1. **环境搭建**:这部分内容提到了JDK、MyEclipse、Oracle、Tomcat等工具的安装与配置。这些是进行Java Web开发的基础,确保所有...
### Java Web应用开发:优化DAO层查询方法 #### 一、背景与目标 在Java Web应用开发中,数据访问对象(Data Access Object, DAO)层是应用架构中的关键部分之一,它负责处理与数据库交互的所有操作。对于一个现有...
在软件开发领域,尤其是Web应用开发中,"DAO"(Data Access Object)模式是一种常见的设计模式,用于在应用程序和数据库之间提供一个抽象层。DAO的主要目的是为了隔离业务逻辑与数据访问逻辑,使得代码更加模块化,...
DAO(Data Access Object)模式与三层结构是软件开发中常见的设计模式和架构方式,主要用于处理数据访问和业务逻辑。在企业级应用开发中,这两种技术的结合能够提高系统的可维护性、可扩展性和复用性。 DAO模式的...
在Java Web开发中,JSP(JavaServer Pages)通常用于创建动态网页,而DAO(Data Access Object)层则负责数据库交互。在这个实例中,我们将探讨如何在JSP中直接调用DAO层来获取MySQL数据库中的数据。这涉及到几个...
总结来说,"dbutils + dbcp 连接池构建DAO层"是Java Web开发中的一种常见实践,它结合了DAO设计模式的易维护性和Dbcp连接池的高性能,为数据库操作提供了一种高效、稳定的解决方案。了解和掌握这一技术,对于提升...
Java Web三层架构是一种常见的软件设计模式,用于构建可扩展、可维护且易于测试的Web应用程序。这个模式将应用逻辑划分为三个主要层次:表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据...
基于JSP+Servlet+JavaBean+JDBC+DAO的Web架构设计该系统,进一步了解并掌握如何对数据库进行操作,以及如何分析、设计一个应用系统。 需求要求: 该系统的基本需求是,系统要实现如下的基本管理功能: (1)用户分为...
结合 Velocity 模板引擎和 Hibernate 持久层框架,形成了一套高效、灵活且易于维护的 Web 应用开发方案。 #### 二、关键技术介绍 ##### 1. Velocity 模板引擎 Velocity 是一个开源的 Java 模板引擎,由 Jakarta ...
《Java Web 应用开发》课程设计说明书详细阐述了如何构建一个学生成绩管理系统,该系统采用Java技术栈,结合jsp进行前端展示,是初学者理解Web应用开发和数据库管理的良好实践。以下是对该设计的一些关键知识点的...
在这个场景中,我们讨论的是一个典型的书店Web应用的架构,它采用了一个经典的三层结构:表示层(Web层)、业务逻辑层(Service层)和数据访问层(DAO层)。这种架构模式广泛应用于单体应用,将代码组织在同一个工程...
理解如何配置和管理这些服务器对于开发和部署Java Web应用至关重要。 七、前端技术 虽然Java Web主要关注后端开发,但现代Web应用往往需要与HTML、CSS和JavaScript等前端技术相结合。AJAX(Asynchronous JavaScript...
DAO模式在Java开发中非常常见,特别是在企业级应用和Web应用中。在Spring框架中,提供了对DAO的支持,例如通过事务管理、AOP(面向切面编程)来增强DAO的性能和安全性。Spring的JdbcTemplate和HibernateTemplate等...
在IT行业中,开发数据库驱动的Web应用程序是一项常见的任务,而Eclipse作为一个强大的集成开发环境(IDE),提供了便捷的工具来支持这一过程。本教程将详细讲解如何利用Eclipse创建一个数据库Web应用程序,帮助...
在本项目中,我们主要探讨的是基于Maven和Spring 3.0 MVC框架,采用注解方式进行开发的一个Web应用程序,特别地,它还利用了SimpleJdbcTemplate进行数据操作。这个项目是一个基本的CRUD(创建、读取、更新、删除)...
根据给定的文件信息,我们可以总结出以下关于使用MyEclipse和Eclipse IDE开发Java Web应用程序的知识点: ### 一、环境配置与安装 #### 1. 环境要求 - **硬件需求**:CPU主频至少1G,内存至少512M。Java开发及...
总结这个项目的核心思想,就是尝试通过减少组件数量来简化Java Web应用的开发流程。尽管这种方法在小型项目中可能有效,但随着项目规模的扩大,可能需要引入更多的模块化和分层设计以保持代码的可维护性和可扩展性。...
数据库文件的包含意味着开发者无需额外设置数据库环境,可以直接运行项目,这对于初学者来说是非常友好的,可以快速体验到一个完整的Web应用程序的运行流程。 【标签】"实现基本的增删改,适合新手"表明了此项目的...
在IT行业中,构建Web应用程序是一项常见的任务,而“基于maven+spring+spring mvc+mybatis框架web项目”提供了一个适用于初学者的学习路径。这个项目利用了四个关键的技术组件,它们分别是Maven、Spring、Spring MVC...