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 条评论
登录 后参与评论

相关文章

来自专栏从零开始的linux

Redis Sentinel

Redis Sentinel高可用集群 自动故障转移(哨兵模式) ? 主机ip端口(redis-server)端口(sentinel)node1(master)...

3746
来自专栏数据之美

关于 python ImportError: No module named 的问题

今天在 centos 下安装 python setup.py install 时报错:ImportError: No module named sysconfi...

5425
来自专栏yl 成长笔记

消息队列的使用 RabbitMQ(一): 安装与总体介绍

RabbitMQ 是一款开源且比较流行的消息中间件。但用起来还是比较麻烦,有人封装了一层, 这就是 EasyNetQ 。

1042
来自专栏移动开发之家

快速将Android项目发布的JCenter

demo https://github.com/CarGuo/PublishToJcenter

1072
来自专栏丑胖侠

maven配置文件不一致导致构建失败

问题 在使用maven构建项目时出现一个神奇的问题。通过Intellij IDEA的Maven Projects中进行构建,没问题,能够成功打包项目。 可是...

1987
来自专栏云计算教程系列

如何在一个Ubuntu 16.04服务器上将Nginx配置为Web服务器和Apache的反向代理

Apache和Nginx是两种常用的PHP开源Web服务器。当托管具有不同要求的多个网站时,在同一虚拟机上运行它们会很有用。在单个系统上运行两个Web服务器的一...

2163
来自专栏蓝天

安装gcc及其依赖

在gcc-4.8.2和gcc-4.1.2基础上编译gcc-5.2.0,有可能会遇到一些问题。 要想成功编译gcc,则在编译之前需要安装好它的至少以下三...

1992
来自专栏xingoo, 一个梦想做发明家的程序员

Linux下安装Redis

首先去官网下载redis安装包:下载redis 准备安装 运行命令: tar zxvf redis-3.0.4.tar.gz 进入解压后的文件夹: cd re...

3815
来自专栏Debian社区

Debian Stretch 安装配置 Skype 聊天工具

Debian 9 Stretch 发布已经一个多月了,本文介绍如何在 Debian Stretch 下,安装最新的 Skype 64位版本。注意 Debian ...

953
来自专栏云计算教程系列

如何使用Ubuntu 16.04的Django一键安装镜像

Django是一个用于快速开发Web应用程序的高级Python框架。Django一键安装程序通过Django,Nginx,Gunicorn和Postgres为您...

1685

扫码关注云+社区