- 浏览: 87519 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (110)
- java (110)
- Comparing PHP Frameworks ( Symfony (1)
- CakePHP (1)
- YII and CodeIgniter) (1)
- spring定时任务的实现 (1)
- 获得一个节点对象的节点类型 (1)
- SWT 文本框Text通过GC重绘改变边框颜色 (1)
- 常用命令收集(系统设置) (1)
- openlayers 应用Google图层你必须做的 (1)
- Shell Sort in Java (1)
- Java网络编程 (1)
- 删除more里面的Edit (1)
- Android颜色选择器 (1)
- Linux安全配置步骤简述 (1)
- 职场官话 (1)
- TOMCAT常用优化 (1)
- 2008 ==> 2009 (1)
- 01_Android介绍 (1)
- HTML特殊字符 (1)
- 终于完成一个最重要的任务——找工作 (1)
- java 加密算法 base64 (1)
- 《南方周末》《南方日报》《新京报》《南方体育》等报纸在线阅读 (1)
- 由ORM框架设计看到微软与苹果的最大差别 (1)
- 通过发微博控制电脑的程序源码 (1)
- flex入门 (1)
- JS合并单元格、JavaScript单元格合并 (1)
- 各种常用编译开关位置 (1)
- 单一入口应用程序概述 (1)
- [转]Cocoa中回调delegate的方法时判断delegate是否已经被释放 (1)
- java简单的通用ajax分页方法 (1)
- /dev/shm放/tmp (1)
- Java中HashMap排序和遍历 . (1)
- Chrome+SwitchySharp+myentunnel+SSH (1)
- LINUX-网卡Bond (1)
最新评论
-
ken890202:
java简单的通用ajax分页方法 -
hanmiao:
真够乱的,什么都看不清。
Linux安全配置步骤简述 -
houxinyou:
说一下我自己的想法.苹果只是做一款相同的东西,然后是完善.有什 ...
由ORM框架设计看到微软与苹果的最大差别 -
delphixp:
微软技术方案很多?。。。。Java 系统笑而不语。。。
由ORM框架设计看到微软与苹果的最大差别 -
huchiwei:
同意楼上说法。这代码....怎么看!!
web应用dao层的开发经验小结
框架用多了,也有些腻。虽然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包。
评论
3 楼
huchiwei
2011-09-03
同意楼上说法。这代码....怎么看!!
2 楼
melody_victor
2011-09-02
能不能format一下,看到这个正如一楼所说 晕...
1 楼
java-lxm
2011-09-02
我表示看着你的代码晕车
发表评论
-
LINUX-网卡Bond
2012-02-08 15:22 898网卡bond是通过把多张网卡绑定为一个逻辑网卡,实现本 ... -
Chrome+SwitchySharp+myentunnel+SSH
2012-02-04 17:14 1891? <p style="margin ... -
Java中HashMap排序和遍历 .
2012-02-03 10:29 1957<div id="article_co ... -
/dev/shm放/tmp
2012-02-02 17:14 928呵呵,有时候不懂装懂的人挺搞笑的哈 转http://z ... -
java简单的通用ajax分页方法
2012-02-02 12:44 1804发表一个自己常用的分页的通用代码,实现了ajax分页。 ... -
[转]Cocoa中回调delegate的方法时判断delegate是否已经被释放
2012-01-31 16:58 1107<p>http://pingguohe.n ... -
单一入口应用程序概述
2012-01-11 14:03 683什么是单一入口应用程序? 在解释什么是单一入口应用 ... -
各种常用编译开关位置
2012-01-11 12:54 719vendor\third-party\products ... -
JS合并单元格、JavaScript单元格合并
2011-12-28 14:08 1111<span style="font-f ... -
flex入门
2011-12-28 12:23 879<span style="fon ... -
通过发微博控制电脑的程序源码
2011-12-20 12:29 1299前段时间看群里挺多讨论 微博api,正好前几天看到有个 ... -
由ORM框架设计看到微软与苹果的最大差别
2011-12-20 09:59 1375一不小心加入水 ... -
《南方周末》《南方日报》《新京报》《南方体育》等报纸在线阅读
2011-12-15 11:04 1257我经常到南方报业提供的网址下载他们出版的报纸看,今天突 ... -
java 加密算法 base64
2011-12-14 17:58 905<span style="color: ... -
终于完成一个最重要的任务——找工作
2011-12-14 14:54 650</span></span>& ... -
HTML特殊字符
2011-12-14 10:54 724最近在做某种模拟器上的网页的显示,需要考虑HTML特殊 ... -
01_Android介绍
2011-12-13 10:44 601? <h4 style="margin ... -
2008 ==> 2009
2011-12-13 10:39 621发现时间过的真的很快,这么快,又是新的一年了。特地翻出 ... -
TOMCAT常用优化
2011-12-12 16:04 670<p class="MsoNorm ... -
职场官话
2011-12-12 12:29 565官场充斥着官话,职场也满是官话,可能你没有注意到而已。 ...
相关推荐
根据提供的部分内容,我们可以进一步探讨如何利用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...