Spring And Hibernate整合
整合点:
- jar包
需要的jar包:
导入Hibernate的必须包
需要spring-orm.jar 整合的配置文件
因为在直接使用hibernate的时候 有核心的配置文件 所以我们可以直接使用配置文件创建
但是和spring整合的时候 要将sessionFactory交由spring来管理 所以我们不能手动的控制他的创建过程重点在于整合的配置文件
配置文件
<!-- sessionFactory 配置文件 --> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <!-- 配置数据源 --> <property name="dataSource" ref="dataSource"></property> <!-- 配置hibernate属性 --> <property name="hibernateProperties"> <props> <!-- 方言--> <prop key="hibernate.dialect">${hibernate.dialect}</prop> <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> </props> </property> <!-- 实体类的扫描路径 --> <property name="packagesToScan"> <value>com.cdsxt.po</value> </property>
事务配置
如果没有事务的话 则 在操作的时候 都需要 手动处理 需要在系统中配置自动事务管理
<!-- -事务管理器->
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager" >
<!--session工厂 -->
<property name="sessionFactory" ref="sessionFactory" />
</bean>
关于事务配置 需要aop支持 并且需要在配置文件中导入tx命名空间
事务配置分类:
第一种:基于注解的配置 用tx:annotation-driven 标签开始 注解事务
需要用@Transactional在业务层中 进行标记
第二种:基于xml配置(申明是事务管理)
需要用到tx命名空间
tx:advice进行声明 代码增强
aop:config
aop:advisor 配置切面
Code:
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="query*" read-only="true"/>
<tx:method name="find*" read-only="true"/>
<tx:method name="*" read-only="true"/>
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
<!--配置aop切入-->
<aop:config>
<aop:pointcut expression="execution(public * com.cdsxt.service.impl.*.*(..))" id="txPointcut"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
</aop:config>