论坛首页 Java企业应用论坛

集成了一个框架(jdbc封装)

浏览 5429 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-11-28  

                 最早是在ibm网站看到的一篇文章,标题好像是封装jdbc之类的,是哪间学校的硕士写的忘记了,(暂且称A君)但功能实在有限,只是初步实现了由java对象反射成后台的sql语句,模拟hibernate的面向对象持久化到数据库,但bug很多。后来又看到一篇文章重新改写了一下A君的源代码,基本实现了像hibernate根据java对象crud(增删改)功能。这次改动还是比较大的,我调试了一下,应用到oracle数据库上还是bug多多。而且如果真正应用到实际项目中还不行,缺点如下:

1)缺少容器级别的事务管理,事务应该由框架容器控制。开发人员只需要配置一下事务类型,无需关心事务回滚,异常出错等等问题。jdk的代理可以实现容器级别的事务管理,但缺点是每个类要有一个接口,导致class会很多。cglib代理很好的解决了这个问题,(忘记是哪个牛人写的了)一个class就可以了。这方面spring做得很好,支持jdk代理和cglib代理。

2)硬性用反射构成的后台sql语句bug很多,在日期类型字段上会出现很多问题。apache的BeanUtils是利用java的反射和自醒机制来读写javabean的属性的,有开源的为什么不用呢(~-__-~),详细可看apache.commons.beanutils.BeanUtils类。你的工程下面应该有这个包。如果你对此感兴趣可以到这里看看http://www.chinaitpower.com/A/2005-07-03/150232.html

                我花了大概大半个月的时间把上面那些问题修正了一番(那时我刚好入职现在的公司,有时间玩,哈哈),集成了一个不像样的框架(在jdbc上封装了一层),特点如下:

一,需支持的框架
1,只采用struts作为前端框架。版本有struts 1.x和struts2,也可以不要。
二,去掉了的重复的工作
1,不用管理数据库连接,只需配置一个property文件就可以完成。
2,不用这样db = new DataBaseConnection();conn = db.getConnection();每次都创建连接,销毁连接,不用大量重复的try,catch,finally块,由容器自动管理。类似于spring。
3,事务采用cglib类库管理,程序员无需关心事务回滚,异常出错等等问题,容器自动管理。事务采用元数据注解来配置。
4,结合了一个异常处理框架,所有异常只需要抛出,不需要在每个类中捕获处理,一个action基类就可以完成所有异常的捕获。
5,日志记录处理也在一个action基类里完成。
6,支持对象添加,不用写sql语句,或者只写少量sql语句就可以完成任务,类似于hibernate。
7,不用从resultSet获得的结果再封装成javabean,由容器自动完成,类似于hibernate。
三,示例:

Student vo = new Student();
vo.setId("1");
vo.setName("小明"); 
vo.setAge("23"); 
dao.insertData(vo); //添加一条记录
dao.updateData(vo,"name like '%小%'"); //更新
dao.deleteData(vo,null); //删除一条记录
dao.deleteDatas("age=23"); // 删除符合条件记录
Collection list= dao.findDatas("*", null, null, Student.class);//查询

四,例子使用

1,在app.properties配置一下mysql连接
#[mysql]
datasource.driverClassName=com.mysql.jdbc.Driver
datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8
datasource.username=root
datasource.password=1234

2,还要加入mysql的驱动包,然后运行GeneralDAOExample.java测试,祝君好运

 

 

lib和src请看附件

  • sql.rar (221 Bytes)
  • 下载次数: 617
   发表时间:2007-11-29  
更新了附件,eclipse直接导入即可,jdk要1.5以上的
0 请登录后投票
   发表时间:2007-11-29  
"1,不用管理数据库连接,只需配置一个property文件就可以完成。"

如果是这样,在使用这个组件的同时,是不是还要使用管理链接的组件呢?如果是,楼上的组件做教学可能更合适。个人观点
0 请登录后投票
   发表时间:2007-11-29  
看了标题 感兴趣的还是源代码
0 请登录后投票
   发表时间:2007-11-29  
源代码太大了,需要源代码的同学留下email
0 请登录后投票
   发表时间:2007-11-29  
dbclick@126.com 感谢分享
0 请登录后投票
   发表时间:2007-11-29  
apple.lzw@gmail.com
感谢分享
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics