hibernate与spring的初步整合

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:p="http://www.springframework.org/schema/p"
 xmlns:tx="http://www.springframework.org/schema/tx"
 xmlns:context="http://www.springframework.org/schema/context"
 xmlns:aop="http://www.springframework.org/schema/aop"
 xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
  http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
  http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">

 <!-- 
 
  配置文件:
  1.配置数据库连接:
   ① dataSourse
   ② sessionFactory
  2.事务的配置:
   ① transactionManager
   ② tx:advice
   ③ aop:pointcut
   
 
  -->

 <context:property-placeholder location="classpath:db.properties"/>
 
 <bean id="dataSourse" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  <property name="user" value="${jdbc.user}"></property>
  <property name="password" value="${jdbc.password}"></property>
  <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
  <property name="driverClass" value="${jdbc.driverClass}"></property>
 </bean>

 <bean id="sessionFactory"
  class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
  <property name="dataSource" ref="dataSourse"></property>
  
  <property name="hibernateProperties">
   <props>
    <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
    <prop key="hibernate.show_sql">true</prop>
    <prop key="hibernate.format_sql">true</prop>
    <prop key="hibernate.hbm2ddl.auto">update</prop>
   </props>
  </property>
 
  <property name="mappingLocations" value="classpath:com/yawn/entity/Acount.hbm.xml"></property> 
  
  <!-- 
   以上部分配置来自于 hibernate 的配置文件 hibernate.cfg.xml 
   如果引入此文件就不需再配置,引入方法如下:
   <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
   -->
 </bean>
 
 
 
 <!-- 
 
  配置事务:
  1.事务管理器
  2.事务属性
  3.事务切点
 
  -->
 
 <bean id="transactionManager"
  class="org.springframework.orm.hibernate4.HibernateTransactionManager">
  <property name="sessionFactory" ref="sessionFactory" />
 </bean>
 
 <tx:advice id="txAdvice">
  <tx:attributes>
   <tx:method name="get*" read-only="true"/>
   <tx:method name="*" />
  </tx:attributes>
 </tx:advice>
 
 <aop:config>
  <aop:pointcut expression="execution(* com.yawn.service.Service1.transfer(..))" id="txPointcut"/>
  <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
 </aop:config>
 
 
 <!-- spring 中 bean 的基本配置和属性注入 -->
 <bean class="com.yawn.dao.impl.AcountDaoImpl" id="acountDaoImpl">
  <property name="sessionFactory" ref="sessionFactory"></property>
 </bean>
 <bean class="com.yawn.service.Service1" id="service">
  <property name="acountDaoImpl" ref="acountDaoImpl"></property>
 </bean>
 
 
 
 <!-- 
 <tx:annotation-driven transaction-manager="transactionManager" />
  -->
</beans>

以上为整合的配置文件,而整合步骤如下:

  1. 配置数据源(dataSourse,javax.sql.DataSourse)
  2. 配置sessionFactory
  3. 配置事务管理器
  4. 配置事务属性(tx:advice -> tx:attributs)
  5. 配置事务切点(包括关联事务属性和事务切点)
  6. 配置其他业务所需的bean等

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏学海无涯

懵逼的HTTP、Socket与TCP

HTTP、Socket、TCP这三个概念在网络开发中经常被提及,也是比较容易被混淆的概念,这三者在TCP/IP协议族中的位置关系: ? 三者的位置关系.png ...

3686
来自专栏后台及大数据开发

springBoot系列教程08:拦截器(Interceptor)的使用

仔细阅读 过滤器(filter)和拦截器(interceptor)的区别 后明白了不少

791
来自专栏九彩拼盘的叨叨叨

超文本传输协议(HTTP)介绍

超文本传输协议(HyperText Transfer Protocol,HTTP)是从服务器传输数据到客户端的传输协议。

552
来自专栏流媒体

TCP详解+wireshark抓包演示简介

TCP提供了一种面向连接的、可靠的字节流服务。 面向连接:接双方在通信前需要预先建立一条连接,这犹如实际生活中的打电话。

883
来自专栏Java 源码分析

SpringBoot 笔记(十):错误处理

2217
来自专栏Java Edge

读懂Java中的Socket编程

Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一。如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实...

582
来自专栏猿人谷

TCP协议的三次握手过程

TCP(Transmission Control Protocol) 传输控制协议 TCP的连接建立过程又称为TCP三次握手。 首先发送方主机向接收方主机发起一...

2018
来自专栏琯琯博客

原生 PHP、Laravel5.4、Yii2 和 ThinkPHP3.2 中的事务实例

一、原生 MySQL <?php // 开启一个事务 mysql_query('START TRANSACTION'); $res1 = mysql_quer...

3275
来自专栏流媒体

Linux下Socket编程(六)——udp简介

中文叫用户数据报协议,属于传输层。UDP是面向非连接的协议,它不与对方建立连接,而是直接把我要发的数据报发给对方。所以UDP适用于一次传输数据量很少、对可靠性要...

752
来自专栏Java Edge

Spring Data JPA踩坑记:与Bootstrap Table的分页协作@PersistenceContext和@Resource的区别

注入一堆保存实体类状态的数据结构,针对实体类的不同状态(四种,managedh或detached等)可以做出不同的反应(merge,persist等等),其实就...

931

扫码关注云+社区