科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Pro Hibernate 3笔记和小结(4)之第二章集成配置Hibernate

Pro Hibernate 3笔记和小结(4)之第二章集成配置Hibernate

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

今天我们一起来学习Hibernate的集成和配置。

作者:willpower 来源:CSDN 2008年3月16日

关键字: 集成配置 Hibernate java

  • 评论
  • 分享微博
  • 分享邮件
今天我们一起来学习Hibernate的集成和配置。

对于其他的JAVA持久化解决方案来说,集成Hibernate到一个JAVA应用是一件非常容易的事情。
相对其他解决方案,Hibernate的设计者避免了更多通用的缺陷和问题,创建了一个轻巧但强大的框架。
所谓轻巧,也就是我们不需要特定的J2EE容器或框架来运行hibernate,其实Hibernate 3仅仅只需要J2SE 1.2或以上版本支持即可(最新的注释功能annotations需要J2SE 5.0支持)。

如果有一个应用是使用Hibernate 2的,那么从Hibernate 2移植到Hibernate 3是非常容易的。
Hibernate 3并不是完全向下兼容的,但是大部分的改变是一些额外的功能,这些功能是我们能够集成到到现有系统中的。 Hibernate开发者在Hibernate 3中提供了Hibernate 2核心对象的实现,使得可以向下兼容Hibernate 2的方法。本书的第14章将会详细讨论Hibernate 2和Hibernate 3的更多不同和区别。

Hibernate的设计中最关键的一个特征是尽可能少的“侵入”,众所周知,EJB是一个侵入性很强的框架。因此,Hibernate在这一点上要优于EJB。

集成Hibernate到JAVA应用中

我们可以直接在JAVA应用中调用Hibernate或者通过其他框架来访问Hibernate。Hibernate支持JAVA管理扩展(JMX),JAVA连接器框架(JCA)和JAVA命名目录接口(JNDI)标准。
使用JMX,我们能够在运行时配置Hibernate。Hibernate可以部署为一个JCA连接器,并且我们可以使在应用中用JNDI来获得一个Hibernate的session factory。
另外,Hibernate使用标准的JDBC数据库驱动来访问关系数据库。Hibernate并不是一个JDBC替换品,它只是在JDBC之上封装的一层。

除了标准JAVA API之外,许多JAVA web和application framework都集成了Hibernate。比如Spring framework提供了优秀的Hibernate集成,它通过在底层封装,提供了一些持久对象的通用支持,持久异常的集合,以及事务管理。我们可以首先从Spring的HibernateTemplate类来开始学习。有关Spring的更多消息可以访问它的官方网站
http://www.springframework.org

无论通过什么方式来访问Hibernat,我们都需要创建一个Hibernate configuration,即配置文件。然后,在配置文件中创建一个Hibernate的session factory(会话工厂)。一旦我们有了一个session factory,我们的应用就可以向这个factory请求session(这里的会话和一般的http的session意义不同)。我们的应用将使用Hibernate的session来管理持久化对象。

在后面,我们会详细讨论如何使用Configuration类来设置所有JAVA应用的Hibernate实例。

部署Hibernate

要集成hibernate到我们的应用中,首先需要使用一些JAVA的类库。

第一个类库是JDBC的jar文件,不管是哪种关系数据库,Oracle,MSSQL还是MySQL都提供自己的JDBC jar,我们选我们使用的就可以了。在Hibernate中有dialect这个概念,也就是方言的意思,是说不同的数据库除了标准SQL外,都提供了各自的SQL扩展,比如Oracle有PLSQL,MSSQL有T-SQL等,这些区分在Hibernate中用方言这个概念来理解。我们将在稍候讨论dialect的详细使用。而且hibernate官方网站的FAQ中也有专门针对不同厂商数据库疑问的解决方案。

如果我们的JDBC版本比较老了,我们依然要使用hibernate的话,那么我们必须要禁用两个JDBC 2的特殊功能:batch update和scrollable result set。(这里我解释一下,前者是用来批处理更新操作,后者主要用在对存储过程的调用)。我们可以通过在配置中做如下设置:
hibernate.jdbc.batch_size=0
hibernate.jdbc.use_scrollable_resultsets=false


在配置完JDBC驱动后,下一步就是部署hibernate3.jar到我们的应用中。

运行Hibernate3需要的类库
当我们下载了Hibernate3的发布包后,我们可以看到一个lib目录,这个lib目录里有许多类库(也就是java的jar文件),我们可以打开其中的readme文件,里面清楚的说明了哪些是必需的(比如cglib,dom4j等),哪些是可选的(如oscache,log4J等)。有些是在编译时需要的,有些是运行时需要的。大家可以详细看看那个文件,具体这就不多说了。

下面将Hibernate3的lib/readme文件内容贴出来,方便大家查阅:

ehcache-1.1.jar (1.1)
- EHCache cache
- runtime, optional (required if no other cache provider is set)

versioncheck.jar (1.0)
- version checker
- buildtime

swarmcache-1.0rc2.jar (1.0rc2)
- runtime, optional
- runtime, optional

jboss-cache.jar (1.2.2 alpha)
- TreeCache clustered cache
- runtime, optional

jgroups-2.2.7.jar (2.2.7)
- JGroups multicast library
- runtime, optional (required by replicated caches)

jta.jar (unknown)
- Standard JTA API
- runtime, required for standalone operation (outside application server)

xml-apis.jar (unknown)
- Standard JAXP API
- runtime, some SAX parser is required

commons-logging-1.0.4.jar (1.0.4)
- Commons Logging
- runtime, required

c3p0-0.8.5.2.jar (0.8.5.2)
- C3P0 JDBC connection pool
- runtime, optional

connector.jar (unknown)
- Standard JCA API
- runtime, optional

jboss-system.jar (unknown)
- unknown name
- runtime, optional (required by TreeCache)

asm-attrs.jar (unknown)
- ASM bytecode library
- runtime, required

jacc-1_0-fr.jar (1.0-fr)
- JACC Library
- runtime, optional

checkstyle-all.jar (unknown)
- Checkstyle
- buildtime

log4j-1.2.9.jar (1.2.9)
- Log4j Library
- runtime, optional

junit-3.8.1.jar (3.8.1)
- JUnit test framework
- buildtime

dom4j-1.6.jar (1.6)
- XML configuration & mapping parser
- runtime, required

antlr-2.7.5H3.jar (2.7.5H3)
- ANother Tool for Language Recognition (patched with proper context classloading)
- runtime

cglib-2.1.jar (2.1.0)
- CGLIB bytecode generator
- runtime, required

jboss-common.jar (unknown)
- unknown name
- runtime, optional (required by TreeCache)

oscache-2.1.jar (2.1)
- OpenSymphony OSCache
- runtime, optional

asm.jar (unknown)
- ASM bytecode library
- runtime, required

ant-launcher-1.6.3.jar (1.6.3)
- Ant launcher
- buildtime

jaas.jar (unknown)
- Standard JAAS API
- runtime, optional (required by JCA)

jdbc2_0-stdext.jar (2.0)
- Standard Extension JDBC APIs
- runtime, required for standalone operation (outside application server)

ant-antlr-1.6.3.jar (1.6.3)
- Ant antlr support
- buildtime

jboss-jmx.jar (unknown)
- unknown name
- runtime, optional (required by TreeCache)

cleanimports.jar (unknown)
- cleanimports
- buildtime

xerces-2.6.2.jar (2.6.2)
- SAX parser
- runtime, required for JDK < 1.4

jaxen-1.1-beta-4.jar (1.1-beta-4)
- Jaxen - universal java xpath engine
- runtime, required if you want to deserialize a Configuration to improve startup performance

ant-junit-1.6.3.jar (1.6.3)
- Ant junit support
- buildtime

ant-swing-1.6.3.jar (1.6.3)
- Ant swing support
- buildtime

commons-collections-2.1.1.jar (2.1.1)
- Commons Collections
- runtime, required

ant-1.6.3.jar (1.6.3)
- Ant core
- buildtime

proxool-0.8.3.jar (0.8.3)
- Proxool JDBC connection pool
- runtime, optional

concurrent-1.3.2.jar (1.3.2)
- unknown name
- runtime, optional (required by TreeCache)

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章