`
jianghengqiu
  • 浏览: 10078 次
  • 性别: 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层的设计方案,并没有提供具体的实现代码,这里写代码的确不方便,以上的六种实现方式,都有各的好处,也遇到过一些细节上的问题,只有经过更多的人的使用,才可以找到问题,并且去解决问题,对于有意了解使用以上几种方式的详情的童鞋,可以一起讨论讨论,并提供你的实现源码!

分享到:
评论

相关推荐

    Hibernate封装dao层

    Hibernate是一个优秀的对象关系映射(ORM)框架,它提供了一种在Java应用中管理关系数据库的便捷方式。"Hibernate封装DAO层"就是将Hibernate的功能整合到DAO设计模式中,以实现更加高效、规范的数据库操作。 1. **...

    使用代理实现Hibernate Dao层自动事务

    本文将深入探讨如何使用代理来实现Hibernate Dao层的自动事务管理,以提高代码的可维护性和事务处理的效率。 首先,理解Dao(Data Access Object)层的作用至关重要。Dao层是应用与数据库之间的一层抽象,它封装了...

    Hibernate_通用DAO模式,一个写好的dao层

    在Java Web开发中,DAO(Data Access Object)模式是一种常用的设计模式,用于封装对数据库的操作,使得业务逻辑层与数据访问层分离,提高代码的可重用性和可维护性。本资源“Hibernate_通用DAO模式”提供了一种适用...

    hibernate dao 生成工具

    DAO模式是一种设计模式,它提供了对数据库操作的抽象,使得业务逻辑层与数据访问层分离,提高了代码的可维护性和可测试性。 Hibernate是一个流行的对象关系映射(ORM)框架,它允许开发者用Java对象来表示数据库中...

    Hibernate 原生通用DAO

    **Hibernate原生通用DAO**是基于Hibernate框架设计的一种简化数据访问操作的方式,它模仿了Spring框架中的`HibernateTemplate`类,旨在提供一个简单易用的DAO(Data Access Object)层,方便开发人员进行数据库操作...

    HibernateDao.java

    `HibernateDao.java`是Hibernate框架中一个常见的数据访问对象(DAO,Data Access Object)类,它的主要职责是封装对数据库的操作,提供一套面向对象的接口,使得业务逻辑层可以无需关心底层SQL语句,直接通过对象...

    JPA(hibernate) Dao 和 DaoSupport

    综上所述,`JPA(hibernate) Dao 和 DaoSupport`涉及到Java持久化技术,主要关注如何通过面向对象的方式操作数据库,以及如何设计和使用DAO层来封装数据访问逻辑。在实际项目中,我们还需要了解如何使用Spring Data ...

    Hibernate通用Dao设计。

    本篇文章将深入探讨Hibernate的通用Dao设计,帮助开发者理解如何利用Hibernate提高代码复用性和可维护性。 在传统的Java应用程序中,DAO(Data Access Object)层是用于封装数据库访问逻辑的地方,它隔离了业务逻辑...

    Hibernate的通用dao

    通用DAO(Data Access Object)是一种设计模式,用于封装对数据库的操作,提供一套可重用的接口,以简化数据访问层的开发工作。本篇将深入探讨Hibernate中的通用DAO实现及其相关知识点。 **一、Hibernate简介** ...

    hibernate spring通用dao

    spring集成hibernate通用dao,泛型,server都可以调用

    hibernate4 通用dao,service

    标题中的“hibernate4 通用dao,service”指的是在Java开发中使用Hibernate框架实现的通用数据访问对象(DAO)和业务服务层(Service)。Hibernate是一个流行的对象关系映射(ORM)工具,它允许开发者使用面向对象的...

    Hibernate 基于持久层框架的DAO模式应用

    DAO模式是一种设计模式,它创建了一个接口来封装对数据源的所有操作,通常用于数据库操作。这种模式将业务逻辑和数据访问操作解耦,使得代码更加模块化,同时也方便更换不同的数据存储方式。 2. **Hibernate框架...

    使用Struts+DAO+Hibernate完成用户登录 源代码

    DAO(Data Access Object)是一种设计模式,它提供了一种与数据库交互的抽象层,使得业务逻辑层与数据访问层解耦。在用户登录时,DAO负责与数据库进行交互,比如执行SQL查询来验证用户名和密码。通过DAO,我们可以...

    HibernateDao 通用

    HibernateDao 是一种基于 Hibernate ORM(对象关系映射)框架的通用数据访问对象,它简化了对数据库的操作,提供了更高级别的抽象,使开发者能够更加专注于业务逻辑而不是底层的数据操作。在Java开发中,Hibernate...

    Hibernate中的DAO模式

    **DAO(Data Access Object)模式**是软件设计模式中用于处理数据访问的一种方式,它将业务逻辑与数据访问层分离,提高代码的可重用性和可维护性。在Java领域,尤其是在企业级应用开发中,DAO模式常与ORM(Object-...

    使用Struts+DAO+Hibernate完成用户登陆

    **DAO模式** 是一种设计模式,用于在应用程序和持久层之间提供一个抽象层。在这个项目中,DAO层负责与数据库进行交互,执行如查询、插入、更新或删除等操作。用户登录时,DAO会被调用来检查用户名和密码是否匹配。...

    junit测试spring,hibernate的dao层代码

    将 `JUnit` 与 `Spring`、`Hibernate` 结合使用,可以对 `DAO(Data Access Object)` 层进行有效的测试,确保数据访问逻辑的正确性。 首先,`DAO` 层是业务逻辑和数据库操作之间的隔离层,通常包含了增删改查等...

    Hibernate泛型Dao

    在传统的Hibernate使用中,针对每个实体类,我们都需要创建一个对应的Dao(Data Access Object)接口及其实现类,这无疑增加了大量重复的代码。泛型Dao的出现,就是为了解决这个问题,它允许开发者通过泛型来定义一...

    HibernateDAO的写法

    本文将详细探讨HibernateDAO的实现方式以及常见设计模式,旨在帮助开发者更好地理解和运用这一技术。 1. HibernateDAO的基本概念 HibernateDAO(Data Access Object)主要负责数据库的读写操作,它封装了对...

    使用Struts + DAO + Hibernate完成用户登陆

    在J2EE应用程序开发中,使用Struts、DAO(数据访问对象)模式和Hibernate框架的组合是一种常见的做法,尤其在构建MVC(模型-视图-控制器)架构的应用程序时。这个实例提供了一个完整的模板,展示了如何将这些技术...

Global site tag (gtag.js) - Google Analytics