本节讲述Spring整合Hibernate。
准备
JBoss官网
Spring jar包:spring-framework-4.0.4.RELEASE
Hibernate jar包:hibernate-release-4.2.4.Final
根据自己Eclipse版本下载对应的插件。我的是Eclipse Kepler 4.3.2,与之对应的Hibernate Tools版本是hibernatetools-Update-4.1.2.Final_2014-03-18_15-46-19-B706。
官网上写它的Requirements: Java 6 or Java 7 and Eclipse Kepler 4.3.2。
下载好hibernatetools之后将其解压,在Eclipse目录下新建文件夹MyPlugins,在MyPlugins文件夹下新建Hibernatetools文件夹,这两个文件夹的名字可以任意取,这样命名是便于识别。将解压好的hibernatetools文件夹下的features和plugins两个文件夹复制到Hibernatetools文件夹下。
在Eclipse目录下新建links文件夹,在links文件夹下新建hibernatetools.link文件,这个文件的名字可以任意取,这样取是便于识别。在hibernatetools.link文件里写入path=/MyPlugins/Hibernatetools
,也可以写绝对路径,都OK的。重启Eclipse,在New-> Other 之后,输入h,看到Hibernate即为安装成功。
目标
1.有IOC容器来生成Hibernate的SessionFactory。
2.让Hibernate使用上Spring的声明式事务。
步骤
1.加入Hibernate
①.添加jar包并build path。
②.添加Hibernate配置文件:hibernate.cfg.xml。
③.编写了持久化类对应的 .hbm.xml文件。
2.加入Spring。
①.jar包。
②.加入Spring的配置文件。
3.整合。
Spring hibernate 事务的流程:
1.在方法开始之前:
①.获取Session。
②.把Session和当前线程绑定,这样就可以在Dao中使用SessionFactory的getCurrentSession()方法来获取Session了。
③.开启事务。
2.若方法正常结束,即没有出现异常,则:
①.提交事务。
②.使用当前线程绑定的Session,解除绑定。
③.关闭Session。
3.若方法出现异常,则:
①.回滚事务。
②.使和当前线程绑定的Session解除绑定。
③.关闭Session。
新建项目spring-04。
新建bin文件夹。将下载的Hibernate jar包解压缩。进入lib-> required文件夹,将全部8个必要jar包复制到bin文件夹下。
antlr-2.7.7.jar
dom4j-1.6.1.jar
hibernate-commons-annotations-4.0.2.Final.jar
hibernate-core-4.2.4.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
javassist-3.15.0-GA.jar
jboss-logging-3.1.0.GA.jar
jboss-transaction-api_1.1_spec-1.0.1.Final.jar
再添加c3p0-0.9.1.2.jar,mysql-connector-java-5.1.22-bin.jar并build path。
在该项目下新建包com.leezp.spring.hibernate.entities。在该包下新建hibernate的配置文件hibernate.cfg.xml。
|
|
在该包下新建Account.java。
|
|
在该包下新建Book.java。
|
|
鼠标单击包,右键new-> Other…-> Hibernate XML Mapping file(hbm.xml),如下图。
点击Next,点Finish。发现包下多了两个文件,这是Hibernate Tools为我们自动生成的hibernate Mapping文件。
打开Book.hbm.xml。
|
|
打开Account.hbm.xml。
|
|
修改Account.hbm.xml文件。
|
|
修改Book.hbm.xml文件。
|
|
新建属性文件db.properties。
|
|
spring4-required jar包
将下载好的spring4-required jar包里的所有jar文件复制到bin文件夹下并且build path。
|
|
在mysql中新建数据库spring_hibernate。不创建任何表。
新建包com.leezp.spring.hibernate.test。在该包下新建测试类SpringHibernateTest.java。
|
|
运行上面的测试类。在数据库里刷新,发现为我们建立好了数据表。
新建包com.leezp.spring.hibernate.dao。在该包下新建接口BookShopDao.java。
|
|
新建包com.leezp.spring.hibernate.dao.impl。在该包下新建接口BookShopDao.java的实现类BookShopDaoImpl.java。
|
|
新建包com.leezp.spring.hibernate.service。
新建接口BookShopService.java。
|
|
新建接口Cashier.java。
|
|
新建包com.leezp.spring.hibernate.service.impl。
在该包下新建接口BookShopService.java的实现类BookShopServiceimpl.java。
|
|
在该包下新建接口Cashier.java的实现类CashierImpl.java。
|
|
新建包com.leezp.spring.hibernate.exception。
在该包下新建异常类BookStockException.java。
|
|
在该包下新建异常类UserAccountException.java。
|
|
向Spring配置文件applicationContext.xml中添加:
|
|
修改测试类SpringHibernateTest.java。
|
|
在测试类SpringHibernateTest.java中运行testBookShopService方法进行测试。
补充说明
Hibernate的配置文件hibernate.cfg.xml不是必须的,可以在Spring配置文件applicationContext.xml里通过配置来取代它。但是不建议这么使用,因为在Spring配置文件中配置Hibernate提示功能不是很好,而且配置Hibernate插件时不如在hibernate配置文件中配置方便。具体操作根据项目需求来定。
修改applicationContext.xml配置文件。
|
|
参考文献
hibernate中的映射文件xxx.hbm.xml详解总结
xxx.hbm.xml文件配置详解,适合保存。
Hibernate 的
版权声明:本文为博主原创文章,转载请注明出处 Leezp’s Blog