Spring4的学习(三)

1.Spring4整合Hibernate4整合什么?

1). 有 IOC 容器来管理 Hibernate 的 SessionFactory

2). 让 Hibernate 使用上 Spring 的声明式事务

2. 整合步骤:

1). 加入 hibernate

①. jar 包

②. 添加 hibernate 的配置文件: hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-configuration SYSTEM "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd" PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN">

-<hibernate-configuration>

-<session-factory>

<!-- 配置 hibernate 的基本属性 -->

<!-- 1. 数据源需配置到 IOC 容器中, 所以在此处不再需要配置数据源 -->

<!-- 2. 关联的 .hbm.xml 也在 IOC 容器配置 SessionFactory 实例时在进行配置 -->

<!-- 3. 配置 hibernate 的基本属性: 方言, SQL 显示及格式化, 生成数据表的策略以及二级缓存等. -->

<property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>

<property name="hibernate.show_sql">true</property>

<property name="hibernate.format_sql">true</property>

<property name="hibernate.hbm2ddl.auto">update</property>

<!-- 配置 hibernate 二级缓存相关的属性. -->

</session-factory>

</hibernate-configuration>

③. 编写了持久化类对应的 .hbm.xml 文件。

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN">

-<hibernate-mapping>

-<class table="SH_BOOK" name="com.atguigu.spring.hibernate.entities.Book">

-<id name="id" type="java.lang.Integer">

<column name="ID"/>

<generator class="native"/>

</id>

-<property name="bookName" type="java.lang.String">

<column name="BOOK_NAME"/>

</property>

-<property name="isbn" type="java.lang.String">

<column name="ISBN"/>

</property>

-<property name="price" type="int">

<column name="PRICE"/>

</property>

-<property name="stock" type="int">

<column name="STOCK"/>

</property>

</class>

</hibernate-mapping>

2). 加入 Spring

①. jar 包

②. 加入 Spring 的配置文件

<?xml version="1.0" encoding="UTF-8"?>

-<beans xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans">

<!-- 配置自动扫描的包 -->

<context:component-scan base-package="com.atguigu.spring.hibernate"/>

<!-- 配置数据源 -->

<!-- 导入资源文件 -->

<context:property-placeholder location="classpath:db.properties"/>

-<bean class="com.mchange.v2.c3p0.ComboPooledDataSource" id="dataSource">

<property value="${jdbc.user}" name="user"/>

<property value="${jdbc.password}" name="password"/>

<property value="${jdbc.driverClass}" name="driverClass"/>

<property value="${jdbc.jdbcUrl}" name="jdbcUrl"/>

<property value="${jdbc.initPoolSize}" name="initialPoolSize"/>

<property value="${jdbc.maxPoolSize}" name="maxPoolSize"/>

</bean>

<!-- 配置 Hibernate 的 SessionFactory 实例: 通过 Spring 提供的 LocalSessionFactoryBean 进行配置 -->

-<bean class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" id="sessionFactory">

<!-- 配置数据源属性 -->

<property name="dataSource" ref="dataSource"/>

<!-- 配置 hibernate 配置文件的位置及名称 -->

<!-- <property name="configLocation" value="classpath:hibernate.cfg.xml"></property> -->

<!-- 使用 hibernateProperties 属相来配置 Hibernate 原生的属性 -->

-<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>

<!-- 配置 hibernate 映射文件的位置及名称, 可以使用通配符 -->

<property value="classpath:com/atguigu/spring/hibernate/entities/*.hbm.xml" name="mappingLocations"/>

</bean>

<!-- 配置 Spring 的声明式事务 -->

<!-- 1. 配置事务管理器 -->

-<bean class="org.springframework.orm.hibernate4.HibernateTransactionManager" id="transactionManager">

<property name="sessionFactory" ref="sessionFactory"/>

</bean>

<!-- 2. 配置事务属性, 需要事务管理器 -->

-<tx:advice id="txAdvice" transaction-manager="transactionManager">

-<tx:attributes>

<tx:method name="get*" read-only="true"/>

<tx:method name="purchase" propagation="REQUIRES_NEW"/>

<tx:method name="*"/>

</tx:attributes>

</tx:advice>

<!-- 3. 配置事务切点, 并把切点和事务属性关联起来 -->

-<aop:config>

<aop:pointcut id="txPointcut" expression="execution(* com.atguigu.spring.hibernate.service.*.*(..))"/>

<aop:advisor pointcut-ref="txPointcut" advice-ref="txAdvice"/>

</aop:config>

</beans>

外部属性文件db.properties

jdbc.user=root
jdbc.password=1230
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql:///spring7

jdbc.initPoolSize=5
jdbc.maxPoolSize=10
#...

3). 整合.

3. 编写代码

Spring4的学习(三)

时间: 2024-11-12 22:45:31

Spring4的学习(三)的相关文章

Spring4.0MVC学习资料,ApplicationContext中的方法详解(三)

做为java开源的一部分,spring框架一直排在老大的位置.Spring4.0 是 Spring 推出的一个重大版本升级,进一步加强了 Spring 作为 Java 领域第一开源平台的地位.Spring4.0 引入了众多 Java 开发者期盼的新特性,如泛型依赖注入.SpEL.校验及格式化框架.Rest风格的 WEB 编程模型等.这些新功能实用性强.易用性高,可大幅降低 JavaEE 开发的难度,同时有效提升应用开发的优雅性.为了方便开发,Spring的ApplicationContext类,

算法学习三阶段

?? 第一阶段:练经典经常使用算法,以下的每一个算法给我打上十到二十遍,同一时候自己精简代码, 由于太经常使用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都能够把程序打 出来. 1.最短路(Floyd.Dijstra,BellmanFord) 2.最小生成树(先写个prim,kruscal 要用并查集,不好写) 3.大数(高精度)加减乘除 4.二分查找. (代码可在五行以内) 5.叉乘.判线段相交.然后写个凸包. 6.BFS.DFS,同一时候熟练hash 表(要熟,要灵活,代码要

Jetty学习三:配置概览-需要配置什么

上一节讲述了怎么配置Jetty,这节将告诉你使用Jetty你需要配置些什么. 配置Server Server实例是Jetty服务端的中心协调对象,它为所有其他Jetty服务端组件提供服务和生命周期管理.在标准Jetty发布中,核心的服务端配置是在etc/jetty.xml文件中,你也能在其中包含其他服务端配置,可以包括: 1)ThreadPool Server实例提供了一个线程池,你可以在etc/jetty.xml中配置最大线程数和最小线程数. 2)Handlers Jetty服务端只能有一个H

ZigBee学习三 UART通信

ZigBee学习三 UART通信 本实验只对coordinator.c文件进行改动就可以实现串口的收发. 修改coordinator.c文件 byte GenericApp_TransID; // This is the unique message ID (counter) afAddrType_t GenericApp_DstAddr; unsigned char uartbuf[128];/**************************************************

Spark学习三:Spark Schedule以及idea的安装和导入源码

Spark学习三:Spark Schedule以及idea的安装和导入源码 标签(空格分隔): Spark Spark学习三Spark Schedule以及idea的安装和导入源码 一RDD操作过程中的数据位置 二Spark Schedule 三Idea导入spark源码 一,RDD操作过程中的数据位置 [hadoop001@xingyunfei001 spark-1.3.0-bin-2.5.0]$ bin/spark-shell --master local[2] val rdd = sc.t

mongodb学习(三)

菜鸟啊...先吐槽一下自己 一 准备工作: 1.安装服务端: 去官网下载 http://www.mongodb.org/downloads 其实也自带了客户端 shell 2.安装客户端: mongoVUE http://blog.mongovue.com/ 并不是完全免费 破解方法: http://yhv5.com/mongovue_480.html 将服务端下载下来后直接安装 我下载在D盘也安装在D盘的... 启动mongodb的服务端不需要各种命令....直接鼠标左键双击bin中的mong

c++ boost库学习三:实用工具

noncopyable 大家都知道定义一个空类的时候,它实际包含了构造函数,拷贝构造函数,赋值操作符和析构函数等. 这样就很容易产生一个问题,就是当用户调用A a(“^_^") 或者A c="^_^" 时会发生一些意想不到的行为,所以很多时候我们需要禁用这样的用法. 一种方法就是把拷贝构造函数和赋值操作符显式的定义为private,但是这样需要很多代码. 于是boost库为大家提供了一个简单的方法:只需要将类继承于noncopyable就可以了. #include "

scala学习三---文件里读取文本行

学习了scala的基本知识后,发现了scala是集函数式和指令式结合为一体的一种语言,代码更加简洁,但是对于用习惯了java的人来说,还真的不是一件易事~~ 今天学习scala脚本读取文本文件 列子如下: import scala.io.Source if(args.length>0){ for(line <- Source.fromFile(args(0)).getLines) print(line.length+" "+line) }else{ Console.err.

Oracle学习(三):单行函数

1.知识点:可以对照下面的录屏进行阅读 SQL> --字符函数 SQL> --字符串的转换 SQL> select lower('hellO WORld') 转小写,upper('hellO WORld') 转大写,initcap('hello world') 首字母大写 2 from dual; SQL> --substr(a,b) 从a中,第b位开始取,取右边所有的字符 SQL> select substr('Hello World',4) from dual; SQL&