Hibernate Generic DAO的介绍安装和使用
本文由发表于6年前 | J2EE | 评论数 2 |  被围观 11,644 views+
1、介绍:2、安装:2.1、通过Maven下载安装:
最新的Maven构建版本:
2.2、不使用Maven下载安装:
仅仅安装Search而不包括DAOs:
3、配置:3.1、Generic DAOs3.2、标准的Hibernate:Session和SessionFactory3.3、使用Hibernate实体管理的JPA:

这个项目以Maven的形式发行,所以你可以以Mave依赖的方式下载这个框架。另外,这些JAR文件也可以从Maven仓库中下载。

1、介绍:

Hibernate Generic DAO框架可以和原始的Hibernate框架一起使用,也可以和Hibernate JPA实现一起使用。当然,理论上,它也可以和其他的JPA实现如OpenJPA或TopLink通过一些额外的配置一起使用。

2、安装:
2.1、通过Maven下载安装:

Hibernate Generic DAO框架可以从Maven中央仓库获取。只需要添加他的依赖到pom.xml中即可。

如果你先使用原始的Hibernate,而不是JPA,你可以在pom.xml中添加如下的依赖:

<dependency>
        <groupId>com.googlecode.genericdao</groupId>
        <artifactId>dao-hibernate</artifactId>
        <version>1.0.0</version>
</dependency>

如果你想使用Hibernate的JPA实现,则添加如下依赖:

<!-- This first dependency includes all the JPA implementations for the DAOs -->
<dependency>
        <groupId>com.googlecode.genericdao</groupId>
        <artifactId>dao</artifactId>
        <version>1.0.0</version>
</dependency>
<!-- This second one includes the Hibernate Entity Manager plugin for the framework -->
<dependency>
        <groupId>com.googlecode.genericdao</groupId>
        <artifactId>search-jpa-hibernate</artifactId>
        <version>1.0.0</version>
</dependency>
最新的Maven构建版本:

官方也周期性的发布开发版本,这包括最新的bug修复和改善版本,通过了所有的单元测试,但是还没有准备好发布成为正式版本。这些构建可以从Sonatype Open Source snapshot仓库中获取:

<repository>
        <id>sonatype-oss-repo</id>
        <name>Sonatype Open Source maven snapshot repo</name>
        <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
</repository>

添加这个仓库到你的pom.xml文件中,然后为该snapshot版本设置Hibernate Generic DAO的版本号(i.e. "1.1.0-SNAPSHOT")。

2.2、不使用Maven下载安装:

如果你现在不在用Maven,你可以从Maven仓库中手动地下载这些JAR文件,该仓库位于:

http://repo1.maven.org/maven2/com/googlecode/genericdao/

这个DAO同时需要search jar文件和dao jar文件。

http://repo1.maven.org/maven2/com/googlecode/genericdao/dao/1.0.0/dao-1.0.0.jar 

http://repo1.maven.org/maven2/com/googlecode/genericdao/search/1.0.0/search-1.0.0.jar

如果你正在使用标准的Hibernate而不是JPA,你还需要下载search-hibernate和dao-hibernate JAR文件:

http://repo1.maven.org/maven2/com/googlecode/genericdao/dao-hibernate/1.0.0/dao-hibernate-1.0.0.jar 

http://repo1.maven.org/maven2/com/googlecode/genericdao/search-hibernate/1.0.0/search-hibernate-1.0.0.jar

如果你使用了JPA实现的Hibernate,只需要下载search-jpa-hibernate JAR文件即可:

http://repo1.maven.org/maven2/com/googlecode/genericdao/search-jpa-hibernate/1.0.0/search-jpa-hibernate-1.0.0.jar

如果感兴趣,你也可以过去该框架的源代码并添加到你的IDE环境中(XXX-X.X.X-sources.jar):

http://repo1.maven.org/maven2/com/googlecode/genericdao/dao/1.0.0/dao-1.0.0-sources.jar 

http://repo1.maven.org/maven2/com/googlecode/genericdao/search/1.0.0/search-1.0.0-sources.jar
http://repo1.maven.org/maven2/com/googlecode/genericdao/dao-hibernate/1.0.0/dao-hibernate-1.0.0-sources.jar 

http://repo1.maven.org/maven2/com/googlecode/genericdao/search-hibernate/1.0.0/search-hibernate-1.0.0-sources.jar
http://repo1.maven.org/maven2/com/googlecode/genericdao/search-jpa-hibernate/1.0.0/search-jpa-hibernate-1.0.0-sources.jar

同时,你也需要Hibernate 3.3(或者更老的版本)。这个框架还需要一个依赖:That is Simple Logging Facade for Java (SLF4J)(Hibernate也需要)。

仅仅安装Search而不包括DAOs:

第一种情况(标准的Hibernate),使用如下依赖:

<dependency>
        <groupId>com.googlecode.genericdao</groupId>
        <artifactId>search-hibernate</artifactId>
        <version>1.0.0</version>
</dependency>

第二种情况(Hibernate的JPA实现),使用如下依赖:

<dependency>
        <groupId>com.googlecode.genericdao</groupId>
        <artifactId>search-jpa-hibernate</artifactId>
        <version>1.0.0</version>
</dependency>

如果使用Maven,不需要下载dao…,而只是下载search…即可。

3、配置:

Hibernate Generic DAO library被设置成不需要进行任何设置。它仅仅是POJO对象的集合,你可以决定怎样才能最好的使用。

3.1、Generic DAOs

Generic DAO接口并不可以立刻被使用,除非他们被继承时指定了特定的声明类型。Generic DAO的目的是让他成为特定的实体的DAO。指定使用哪个实体的方法是创建一个GenericDAO的子类并声明具体的实体泛型类型。

3.2、标准的Hibernate:Session和SessionFactory

为了正常工作,每一个DAO和SearchFacade都需要一个Session和SessionFactory。默认的,他们暴露一个public的setSessionFactory()方法,并且使用SessionFactory.getCurrentSession()去获取Session,在你任何需要的时候。在这个配置中,SessionFactory是必须的,并且通常只设置一次,在当对象初始化的使用。

所以,当你需要使用getCurrentSession()方法时,你需要做的只是在使用它们之前,确保每一个DAO都有他自己的SessionFactory集合。如果你需要做特殊的工作,查看UserGuide中的"Details and Tips"里的"Hibernate session strategy"。

如果想要查看一个使用Spring auto-wiring的示例项目,可以在这个SVN中的一个web 项目:/trunk/sample/hibernate-maven-web。

3.3、使用Hibernate实体管理的JPA:

这个配置使用起来比较复杂,因为为了达到使用不同的JPA供应商提供的实现的能力。

每一个DAO需要一个JPASearchProcessor和一个EntityManager。一般来说,一个单个的Search Processor实例在其生命周期中都会关联一个DAO实例。同时,一个新的“当前的” 实体管理器将注入到SearchProcessor中,由于Searchrocessor确保任何实体管理器的使用都关联到同一个持久化单元。

JPASearchProcessor被设计成单例模式。其构造器需要一个MetadataUtil实例。一个JPASe archProcessor只能和关联到了相同的持久化单元的实体处理器一起使用。如果一个应用程序有多个持久化单元,则需要相应的多重Search Processors。

MetadataUtil是允许框架和各种JPA供应商一起工作的抽象层。为了使用特定的JPA供应商,一个MetadataUtil实现必须提供。当前,这个框架只有一个Hibernate的实现。

理论上,不同的MetadataUtil实现需要不同的配置。Hibernate的实现是com.googlecode.genericdao.search.hibernate.HibernateMetadataUtil。每一个持久化单元都需要一个实例。(i.e. EntityManagerFactory)。使用com.googlecode.genericdao.search.jpa.hibernate.HibernateMetadataUtil.getInstanceForEntityManagerFactory(HibernateEntityManagerFactory)来获取实例。

如果想看个使用Spring auto-wiring的实例项目配置,可以在这个SVN中的一个web 项目:可以在这个SVN中的一个web 项目:/tags/1.0.0/sample/jpa-hibernate-maven。

JPASearchFacade的配置基本和DAOs的配置一样。

本文由arthinking翻译,查看英文原文:hibernate-generic-dao
除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。
本文链接:http://www.itzhai.com/hibernate-generic-dao-introduction-to-installation-and-use.html
关键字: ,
arthinking Java技术交流群:280755654,入门群:428693174 more
分享到:
 
2011 12/27
如果您有更好的原创技术博文或者观点,欢迎投稿:admin@itzhai.com,或者关注订阅左侧浮动面板的微信号订阅IT宅itread)发送消息。
文章评论
    2条评论
  1. 广州私家侦探 2011年12月28日03:39:20  #-49楼 回复 回复

    谢谢分享了。帮你点广告赚钱

给我留言

有人回复时邮件通知我
J2EE的相关文章
随机文章 本月热门 热评
1 可编程并行接口8255A芯片使用逻辑电平开关控制LED显示 2011/5/4
2 操作系统接口-用户接口 程序接口 系统调用 2011/6/30
3 IKAnalyzer词典占用内存大小分析 2014/6/9
4 C++语法笔记 – 函数 2011/9/3
5 【转】让你的 Node.js 应用跑得更快的 10 个技巧 2014/8/31
6 拖延心理学中的思考 2014/9/15
友情推荐 更多
破博客 文官洗碗安天下,武将打怪定乾坤。多么美好的年代,思之令人泪落。
Mr.5's Life 白天是一名程序员,晚上就是个有抱负的探索者
行知-追寻技术之美 关注大数据,分布式系统
我爱编程 编程成长轨迹
Cynthia's Blog 学习笔记 知识总结 思考感悟
 
猜您喜欢
欢迎关注我的公众号 IT宅
关于IT宅 文章归档

IT宅中的文章除了标题注明转载或有特别说明的文章,均为IT宅的技术知识总结,学习笔记或随笔。如果喜欢,请使用文章下面提供的分享组件。转载请注明出处并加入文章的原链接。 感谢大家的支持。

联系我们:admin@itzhai.com

Theme by arthinking. Copyright © 2011-2015 IT宅.com 保留所有权利.