分享
 
 
 

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

王朝other·作者佚名  2006-07-06
窄屏简体版  字體: |||超大  

/**

作者:Willpower

来源:Rifoo Technology(http://www.rifoo.com

时间:2006-06

备注:转载请保留以上声明

**/

今天我们一起来学习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)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有