`
jianghengqiu
  • 浏览: 9819 次
  • 性别: Icon_minigender_1
  • 来自: 广西
社区版块
存档分类
最新评论

使用Hibernate设计Dao层的几种方式 (朋友的一篇心得,感觉不错)

阅读更多


    之前一直由于QQ的日志编辑并不能友好的编写程序代码,就很少上来这里发表文章,最近在社区混得不好,只能上这里消遣消遣了,勉强上来这写点东西,不然把一些东西忘了,那可不好!
    直接奔主题,说一说数据库访问层的问题,该层操作数据库的实现方式有很多种,当然各有各的好处,选择哪一种,根据你的心情而定,dao层所做的事情就是单纯的数据CRUD,不做别的事情,如果你发现你的dao层存在业务逻辑,那么赶紧在项目没有做大之前改掉吧,因为我就曾今看到过我以为同学,把DAO层和Service层搞混了,dao存在于大多数软件工程中,它已成为程序架构必不可少的组成部分,当然,dao是可拔插的,如果你的dao写死在了某个程序里,那说明你对于dao的理解并不透彻,试着把你的dao移植到别的程序里吧,如果不能做到“一次编写,到处运行”,那就考虑重构你的dao层吧!


第一种:直接写JDBC来实现数据库的操作,这种方式是最原始的,当然,如果你对于写JDBC非常的熟悉,那没问题,但是这并不是一个追求上进的程序员做的事,久而久之,这将是一件痛苦的事,而不是一件值得炫耀的事……


那么以下的几种方法就是直接通过或间接通过hibernate框架来实现dao层的设计了,因为hibernate够强大,够流行,够灵活,曾经试过使用JBoss写DAO,的确不怎么爽!


第二种:使用hibernate的session实现数据库操作,这种方式是使用hibernate的最基础的方式,也是最灵活的一种方式,因为session实现了hibernate的所有数据库操作方法,剩下的就看你如何组装这些语句完成你的程序逻辑了


第三种:继承Spring的HibernateDaoSupport,Spring为Hibernate的Dao提供的工具类,其底层是通过HibernateTemplate来实现数据库的操作,但是使用这个工具类,有些地方,对于数据库的操作并不够灵活,曾经我为了这些问题纠结了很久,也许是我个人对这个类的熟悉度有限,如果有哪位童鞋能灵活的运用此类,还望指点一二


第四种:使用HibernateTemplate,它提供了非常多的常用方法来完成数据库的基本操作,使得持久层访问摸板化,这种方式其实和第三种差不多,不多做解释,但是要灵活的运用该模板,还得知道第五种方式


第五种:Hibernate的复杂用法HibernateCallback回调函数,通过调用回调函数来实现的数据库操作,这种方式可以完全使用Hibernate的 session操作数据库,这也是我最喜欢用的方法,因为它够强大,够灵活,够高深


第六种:使用EntityManager,EntityManager里也封装了hibernate对数据库的操作,可以通过@PersistenceContext注解为其注入实例,但是本人对于此类的使用方法并不是很熟悉,也只使用过一次而已,还在学习中


以上只是列举了我使用过的DAO层的设计方案,并没有提供具体的实现代码,这里写代码的确不方便,以上的六种实现方式,都有各的好处,也遇到过一些细节上的问题,只有经过更多的人的使用,才可以找到问题,并且去解决问题,对于有意了解使用以上几种方式的详情的童鞋,可以一起讨论讨论,并提供你的实现源码!

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics