Hibernate5+Spring4整合
(1) pom.xml
1 <!--Spring Object/Relational Mapping --> 2 <dependency> 3 <groupId>org.springframework</groupId> 4 <artifactId>spring-orm</artifactId> 5 <version>xxx</version> 6 </dependency> 7 <!--Hibernate Core --> 8 <dependency> 9 <groupId>org.hibernate</groupId> 10 <artifactId>hibernate-core</artifactId> 11 <version>xxx</version> 12 </dependency>
(2) hibernate.cfg.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE hibernate-configuration PUBLIC 3 "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 4 "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 5 <hibernate-configuration> 6 <session-factory> 7 <!-- SQL 方言(e.g. MySQL) --> 8 <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> 9 <!-- show_sql: 操作数据库时,会 向控制台打印sql语句 --> 10 <property name="show_sql">true</property> 11 <!-- format_sql: 打印sql语句前,会将sql语句先格式化 --> 12 <property name="format_sql">true</property> 13 <!-- 将Session与线程绑定。只有配置了该配置,才能使用getCurrentSession --> 14 <!-- 使用spring管理事务[org.springframework.orm.hibernate3.SpringSessionContext]管理事务时,不能设定 --> 15 <!-- <property name="hibernate.current_session_context_class">thread</property> --> 16 <!-- hbm2ddl.auto: 生成表结构的策略配置 update(最常用): 如果当前数据库中不存在表结构,那么自动创建表结构. 如果存在表结构,并且表结构与实体一致,那么不做修改 17 如果存在表结构,并且表结构与实体不一致,那么会修改表结构.会保留原有列. create(很少):无论是否存在表结构.每次启动Hibernate都会重新创建表结构.(数据会丢失) 18 create-drop(极少): 无论是否存在表结构.每次启动Hibernate都会重新创建表结构.每次Hibernate运行结束时,删除表结构. 19 validate(很少):不会自动创建表结构.也不会自动维护表结构.Hibernate只校验表结构.如果表结构不一致将会抛出异常. --> 20 <property name="hbm2ddl.auto">update</property> 21 <!-- hibernate.connection.autocommit: 事务是否自动提交 --> 22 <property name="hibernate.connection.autocommit">false</property> 23 <!-- 注册实体映射类 --> 24 <mapping class="com.xxx.xxx" /> 25 </session-factory> 26 </hibernate-configuration>
(3) application-domain.xml
1 <!-- 定义Hibernate的SessionFactory --> 2 <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean" lazy-init="false"> 3 <property name="dataSource" ref="dataSource" /> 4 <property name="configLocation" value="classpath:/META-INF/hibernate/hibernate.cfg.xml"></property> 5 </bean> 6 <!-- 配置Spring声明式事务 --> 7 <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager"> 8 <property name="sessionFactory" ref="sessionFactory"></property> 9 </bean>
(注) dataSource请自行配置