一、整合应该注意什么地方
1. Spring 整合 Hibernate 整合什么 ?
1). 有 IOC 容器来管理 Hibernate 的 SessionFactory
2). 让 Hibernate 使用上 Spring 的声明式事务 。(可以不用,如果采用SessionFactory.openSession()的方式可以不需要用,也可以用。但是如果采用sessionFactory.getCurrentSession()这种的话,必须采用,因为必须提交事务,但是我按这篇博客操作http://www.cnblogs.com/ylhssn/p/5181149.html,没有实现成功。)
2. 整合步骤
1). 加入 hibernate
①. jar 包
要额外引入的jar <!-- hibernate部分 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-hibernate3</artifactId> <version>2.0.8</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${hibernate.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring.version}</version> </dependency> |
②. 添加 hibernate 的配置文件: hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?> <property name="hibernate.show_sql">true</property> <!--这个表不存在的话,就会创建表--> |
③. 编写了持久化类对应的 .hbm.xml 文件
类与表对应关系的编写
<?xml version="1.0"?> <hibernate-mapping> |
2). 加入 Spring
①. jar 包(略)
②. 加入 Spring 的配置文件
(额外的spring配置:)
spring相关的配置如下:
<context:component-scan base-package="com.jeff"/>
<!-- 导入外部属性文件如下 -->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!-- 配置C3P0连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClass}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<!-- 配置 Hibernate 的 SessionFactory 实例:
通过 Spring 提供的 LocalSessionFactoryBean 进行配置 -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!-- 配置数据源属性 -->
<property name="dataSource" ref="dataSource"></property>
<!-- 配置 hibernate 配置文件的位置及名称 -->
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
<!-- 配置 hibernate 映射文件的位置及名称, 可以使用通配符 -->
<property name="mappingLocations"
value="classpath:mapper/*.hbm.xml"></property>
</bean>
<bean id="hibernateTemplate"
class="org.springframework.orm.hibernate3.HibernateTemplate"
scope="singleton">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 配置 Spring 的声明式事务,如果没有用到事务的话,可以不需要配置 -->
<!-- 1. 配置事务管理器 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<aop:aspectj-autoproxy />
对于我注释这一段代码,增加数据的话,这种操作是报错的。