论坛首页 Java企业应用论坛

模板方法和Callback回调应用实践-自己动手写JdbcTemplate(附源码)

浏览 14816 次
精华帖 (0) :: 良好帖 (6) :: 新手帖 (14) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-09-06  
blackchoc 写道
感谢楼主分享。
现在我在试着重构手头的一个项目,不幸的是这个项目已经经历了n多人,从最初到现在已经很久了。所用的技术就是楼主传说中“高手”所用的sun jdbc api。哈哈

你最好的选择我认为是引入JdbcTemplate,JdbcTemplate是对直接使用jdbc api的最好升级途径。
0 请登录后投票
   发表时间:2010-10-09  
blackchoc 写道
感谢楼主分享。
现在我在试着重构手头的一个项目,不幸的是这个项目已经经历了n多人,从最初到现在已经很久了。所用的技术就是楼主传说中“高手”所用的sun jdbc api。哈哈

那个项目应该没有使用spring框架吧,如果使用spring框架,jdbcTemplate是首选(当然是在没有使用ORM框架的情况下)。
0 请登录后投票
   发表时间:2010-10-09  
finallygo 写道
我的耦合的意思是你不要去引用HsqldbUtil这样的类,我的意见是设置一个类型为java.sql.Connection的属性,并提供它的set方法,这样不就不会与你那个类耦合了吗?而且也提供了灵活性.因为获取连接方式是很多种的,我觉得你写在HsqldbUtil里是不太好的,你可以看spring里的虽然看起来差不多,但是它提供了setDataSource的方法吧?
我之所以会考虑事务的方面是因为我也写过自己的JdbcTemplate,但是事务处理方面却不理想,所以想看看你是怎么考虑的.而且你这样还有个不好的地方就是你每次执行查询都要重新获得一次连接吧,这样是不是太消耗资源了?
当然还是要感谢你分享你的知识.

拜托,你这个建议会害死人的。Connection不是线程安全的,绝对不能这样用
0 请登录后投票
   发表时间:2010-10-20  
daquan198163 写道
finallygo 写道
我的耦合的意思是你不要去引用HsqldbUtil这样的类,我的意见是设置一个类型为java.sql.Connection的属性,并提供它的set方法,这样不就不会与你那个类耦合了吗?而且也提供了灵活性.因为获取连接方式是很多种的,我觉得你写在HsqldbUtil里是不太好的,你可以看spring里的虽然看起来差不多,但是它提供了setDataSource的方法吧?
我之所以会考虑事务的方面是因为我也写过自己的JdbcTemplate,但是事务处理方面却不理想,所以想看看你是怎么考虑的.而且你这样还有个不好的地方就是你每次执行查询都要重新获得一次连接吧,这样是不是太消耗资源了?
当然还是要感谢你分享你的知识.

拜托,你这个建议会害死人的。Connection不是线程安全的,绝对不能这样用

汗,线程安全不安全要看你是怎么创建这个对象的吧,如果我每次都是用new的方式来创建jdbcTemplate对象,怎么会有线程不安全之说??
就算我使用单例的,难道你不知道有ThreadLocal这个类吗?
0 请登录后投票
   发表时间:2010-10-20  
finallygo 写道
daquan198163 写道
finallygo 写道
我的耦合的意思是你不要去引用HsqldbUtil这样的类,我的意见是设置一个类型为java.sql.Connection的属性,并提供它的set方法,这样不就不会与你那个类耦合了吗?而且也提供了灵活性.因为获取连接方式是很多种的,我觉得你写在HsqldbUtil里是不太好的,你可以看spring里的虽然看起来差不多,但是它提供了setDataSource的方法吧?
我之所以会考虑事务的方面是因为我也写过自己的JdbcTemplate,但是事务处理方面却不理想,所以想看看你是怎么考虑的.而且你这样还有个不好的地方就是你每次执行查询都要重新获得一次连接吧,这样是不是太消耗资源了?
当然还是要感谢你分享你的知识.

拜托,你这个建议会害死人的。Connection不是线程安全的,绝对不能这样用

汗,线程安全不安全要看你是怎么创建这个对象的吧,如果我每次都是用new的方式来创建jdbcTemplate对象,怎么会有线程不安全之说??
就算我使用单例的,难道你不知道有ThreadLocal这个类吗?

是你自己说的“设置一个类型为java.sql.Connection的属性”,还在那狡辩。
如果调用者需要“每次都是用new的方式来创建jdbcTemplate对象”,并且set进去一个connection,调完了还要负责关连接,那还要你这个jdbcTemplate做什么呢,jdbcTemplate不就是为了封装“连接获取、关闭、异常处理”这些逻辑的么?
0 请登录后投票
   发表时间:2010-10-25  
不错的文章,条理清晰,JAVA新手来学习了!
0 请登录后投票
   发表时间:2010-10-26  
daquan198163 写道
finallygo 写道
daquan198163 写道
finallygo 写道
我的耦合的意思是你不要去引用HsqldbUtil这样的类,我的意见是设置一个类型为java.sql.Connection的属性,并提供它的set方法,这样不就不会与你那个类耦合了吗?而且也提供了灵活性.因为获取连接方式是很多种的,我觉得你写在HsqldbUtil里是不太好的,你可以看spring里的虽然看起来差不多,但是它提供了setDataSource的方法吧?
我之所以会考虑事务的方面是因为我也写过自己的JdbcTemplate,但是事务处理方面却不理想,所以想看看你是怎么考虑的.而且你这样还有个不好的地方就是你每次执行查询都要重新获得一次连接吧,这样是不是太消耗资源了?
当然还是要感谢你分享你的知识.

拜托,你这个建议会害死人的。Connection不是线程安全的,绝对不能这样用

汗,线程安全不安全要看你是怎么创建这个对象的吧,如果我每次都是用new的方式来创建jdbcTemplate对象,怎么会有线程不安全之说??
就算我使用单例的,难道你不知道有ThreadLocal这个类吗?

是你自己说的“设置一个类型为java.sql.Connection的属性”,还在那狡辩。
如果调用者需要“每次都是用new的方式来创建jdbcTemplate对象”,并且set进去一个connection,调完了还要负责关连接,那还要你这个jdbcTemplate做什么呢,jdbcTemplate不就是为了封装“连接获取、关闭、异常处理”这些逻辑的么?

我没有狡辩啊,我的意思是设置不设置"一个类型为java.sql.Connection的属性"和线程俺不安全没有必然的关系,还有就是"调完了还要负责关连接",这是什么意思,我也可以在jdbcTemplate里关闭啊,为什么不能呢?
0 请登录后投票
   发表时间:2010-10-30  
回调方法的原理、设计、实现、示例讲解的很好!
学习了!
0 请登录后投票
   发表时间:2010-12-14  
说一点关于类映射的相关,可以考虑使用反射在组装这个User,这样的话就不必针对每个pojo做一个JdbcTepmlateImpl。
0 请登录后投票
   发表时间:2010-12-14  
写的非常好啊,支持楼主,不过还是被投了好多新手贴。。。
楼上说用反射是怎么做的呢,我觉得像楼主说的用泛型就可以不用对每个pojo做一个jdbcTemplateImpl
0 请登录后投票
论坛首页 Java企业应用版

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