spring+hibernate 两种整合方式配置文件的方法

之前的文章都是讲解springmvc+spring+mybatis 的整合,而很少有springmvc+spring+hibernate 因为工作的需要,最近在使用hibernate 所以下面我们来看看 spring整合hibernate的配置文件,这里只说spring+hibernate 的配置文件而不说springmvc 因为这些是不用变的。

spring整合hibernate 有两种方式 1、注解方式 2、xml方式实现

1、注解方式实现:

applicationContext.xml配置文件:

<?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:aop="http://www.springframework.org/schema/aop"
   xmlns:tx="http://www.springframework.org/schema/tx"
   xmlns:context="http://www.springframework.org/schema/context"
   xsi:schemaLocation="
     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.xsd
     http://www.springframework.org/schema/aop
     http://www.springframework.org/schema/aop/spring-aop.xsd
     http://www.springframework.org/schema/context
     http://www.springframework.org/schema/context/spring-context.xsd">
  <context:component-scan base-package="com.test" />
  <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
   <property name="locations">
    <list>
      <value>classpath:jdbc.properties</value>
    </list>
   </property>
  </bean>
  <bean id="c3p0DataSource" destroy-method="close"
    class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="${driverClass}" />
    <property name="jdbcUrl" value="${url}" />
    <property name="user" value="${user}" />
    <property name="password" value="${password}" />
    <property name="initialPoolSize" value="${initialPoolSize}" />
    <property name="minPoolSize" value="${minPoolSize}" />
    <property name="maxPoolSize" value="${maxPoolSize}" />
    <property name="maxIdleTime" value="${maxIdleTime}" />
  </bean>
  <bean id="sessionFactory"
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="c3p0DataSource" />
    <property name="packagesToScan">
      <list>
        <value>com.test.bean</value>
      </list>
    </property>
    <property name="hibernateProperties">
      <props>
        <prop key="hibernate.dialect">${dialect}</prop>
        <prop key="hibernate.show_sql">${show_sql}</prop>
        <prop key="hibernate.format_sql">${format_sql}</prop>
        <prop key="hibernate.use_sql_commants">${use_sql_comments}</prop>
        <prop key="hibernate.hbm2ddl.auto">${hbm2ddl.auto}</prop>
      </props>
    </property>
  </bean>
  <bean id="txManager"
    class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
  </bean>
  <tx:advice id="txAdvice" transaction-manager="txManager">
    <tx:attributes>
      <tx:method name="get*" read-only="true" />
      <tx:method name="*" />
    </tx:attributes>
  </tx:advice>
  <aop:config>
    <aop:pointcut id="bizMethods" expression="execution(* com.test.biz.*.*(..))" />
    <aop:advisor advice-ref="txAdvice" pointcut-ref="bizMethods" />
  </aop:config>
</beans>

2.xml方式实现

applicationContext.xml配置:

<?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:aop="http://www.springframework.org/schema/aop"
 xmlns:tx="http://www.springframework.org/schema/tx"
 xsi:schemaLocation="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.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop.xsd"> 

  <!-- 让spring 去读取指定路径下的资源文件 -->
  <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
   <property name="locations" value="classpath:jdbc.properties"/>
  </bean> 

  <!-- 配置c3p0连接池 -->
  <bean id="c3p0Source" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
   <property name="driverClass" value="${driverClass}" />
   <property name="jdbcUrl" value="${url}" />
   <property name="user" value="${user}" />
   <property name="password" value="${password}" />
   <property name="initialPoolSize" value="${initialPoolSize}" />
   <property name="minPoolSize" value="${minPoolSize}" />
   <property name="maxPoolSize" value="${maxPoolSize}" />
   <property name="maxIdleTime" value="${maxIdleTime}" />
  </bean> 

  <!-- 配置SessionFactory -->
  <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
   <property name="dataSource" ref="c3p0Source" />
   <property name="mappingResources">
     <list>
      <value>/com/cdzg/spring/bean/User.hbm.xml</value>
     </list>
   </property>
   <property name="hibernateProperties">
    <props>
        <prop key="hibernate.dialect">${dialect}</prop>
        <prop key="hibernate.hbm2ddl.auto">${hbm2ddl.auto}</prop>
        <prop key="hibernate.show_sql">${show_sql}</prop>
        <prop key="hibernate.format_sql">${format_sql}</prop>
        <prop key="hibernate.use_sql_comments">${use_sql_comments}</prop>
      </props>
   </property>
  </bean> 

  <!-- 配置事务管理器 -->
  <bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
   <property name="sessionFactory" ref="sessionFactory" />
  </bean> 

  <!-- 定义事务通知 -->
  <tx:advice id="txAdvice" transaction-manager="txManager">
   <tx:attributes>
    <tx:method name="get*" read-only="true"/>
    <tx:method name="*"/>
   </tx:attributes>
  </tx:advice> 

   <!-- 定义事务切面,并应用事务通知 -->
   <aop:config>
   <aop:pointcut id="xxxBizImpl" expression="execution(* com.cdzg.spring.biz.*.*(..))"/>
   <aop:advisor pointcut-ref="xxxBizImpl" advice-ref="txAdvice"/>
   </aop:config> 

  <bean id="userDaoImpl" class="com.cdzg.spring.dao.impl.UserDaoImpl">
    <property name="sessionFactory" ref="sessionFactory" />
  </bean>
  <bean id="userBizImpl" class="com.cdzg.spring.biz.impl.UserBizImpl">
    <property name="userDao" ref="userDaoImpl" />
  </bean>
  <bean id="userAction" class="com.cdzg.spring.web.actions.UserAction">
    <property name="userBiz" ref="userBizImpl" />
  </bean>
</beans>

两种配置最大的区别就是注解方式不用在写O/R映射配置文件而xml方式实现的要配置O/R映射配置文件

注解的这种方式,直接扫描bean包就可以,剩下的对应关系由框架完成

而xml配置方式要配置O/R 映射文件并在这里指定文件,如果多的话可以使用通配符 "*"

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • java中hibernate二级缓存详解

    Hibernate的二级缓存 一.缓存概述 缓存(Cache): 计算机领域非常通用的概念.它介于应用程序和永久性数据存储源(如硬盘上的文件或者数据库)之间,其作用是降低应用程序直接读写永久性数据存储源的频率,从而提高应用的运行性能.缓存中的数据是数据存储源中数据的拷贝.缓存的物理介质通常是内存 hibernate中提供了两个级别的缓存 第一级别的缓存是 Session 级别的缓存,它是属于事务范围的缓存.这一级别的缓存由 hibernate 管理的,一般情况下无需进行干预 第二级别的缓存是 S

  • Hibernate识别数据库特有字段实例详解

    Hibernate识别数据库特有字段实例详解 前言: Hibernate已经为绝大多数常用的数据库数据类型提供了内置支持,但对于某些数据库的专属字段支持就不够好了. 这些特殊数据类型往往提供了比常规数据类型更好的数据表达能力,更符合我们的业务场景.比如PostgreSQL的Interval类型,可以非常方便的保存一个时间段的数据. 本文以添加Interval类型支持为例,说明为Hibernate添加特有数据类型支持的方法. Hibernate提供了丰富的数据类型支持,但对于部分数据库专有的数据类

  • Hibernate映射之基本类映射和对象关系映射详解

    回想一些我们在没有学习ssh的时候,我们建立数据库的表时,首先是数据库建模E-R图,然后再通过实体模型来建立关系模型,再建立相应的表.实体间存在三种关系,一对一,一对多(或者说多对一),多对多.而如今我们要根据类来映射相应的表,那只能是通过类与类之间的关系加上映射文件来映射数据库的表.我们学习UML建模,类与类之间存在五种关系,继承,实现,关联,依赖,聚合/组合,在hibernate中实体类之间的关系也是如此,对于不同的关系对应的代码实现我们已经很熟悉了,所以对于实体类是复习的知识. Hiber

  • Spring Boot + Jpa(Hibernate) 架构基本配置详解

    1.基于springboot-1.4.0.RELEASE版本测试 2.springBoot + hibernate + Druid + MySQL + servlet(jsp) 不废话,直接上代码 一.maven的pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&qu

  • Spring Hibernate实现分页功能

    本实例采用Spring+Hibernate实现简单的分页功能,供大家参考,具体内容如下 最关键的是运用Hibernate的query里面的两个方法: query.setFirstResult((p.getPage()-1)*p.getRows()); 指定从那个对象开始查询,参数的索引位置是从0开始的. query.setMaxResults(p.getRows()); 分页时,一次最多产寻的对象数 主要实现类: package com.paging; import java.util.List

  • Hibernate实体对象继承的三种方法

    Hibernate实体对象继承的方法 hibernate继承策略总共有三种,一种是共用一张表:一种是每个类一张表,表里面储存子类的信息和父类的信息:还有一种是通过表连接的方式,每个类都有一张表,但是子类对应的表只保存自己的信息,父类对应的表保存父类的信息,它们之间通过子类表和父类表的关联来获取所有的信息. 第一种方式,即共用一张表: @Entity @Inheritance(strategy=InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(n

  • 基于Hibernate中配置文件的学习(分享)

    首先我们看一下hibernate的主配置文件 <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <!-- 通常,一个sessi

  • Spring4整合Hibernate5详细步骤

    Spring与Hiberante整合 通过hibernate的学习,我们知道,hibernate主要在hibernate.cfg.xml配置文件中 接下来我们看一下hibernate的一个配置文件 hibernate配置文件 hibernate.cfg.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibern

  • spring+hibernate 两种整合方式配置文件的方法

    之前的文章都是讲解springmvc+spring+mybatis 的整合,而很少有springmvc+spring+hibernate 因为工作的需要,最近在使用hibernate 所以下面我们来看看 spring整合hibernate的配置文件,这里只说spring+hibernate 的配置文件而不说springmvc 因为这些是不用变的. spring整合hibernate 有两种方式 1.注解方式 2.xml方式实现 1.注解方式实现: applicationContext.xml配置

  • spring aop两种配置方式

    第一种:注解配置AOP 注解配置AOP(使用 AspectJ 类库实现的),大致分为三步: 1. 使用注解@Aspect来定义一个切面,在切面中定义切入点(@Pointcut),通知类型(@Before, @AfterReturning,@After,@AfterThrowing,@Around). 2. 开发需要被拦截的类. 3. 将切面配置到xml中,当然,我们也可以使用自动扫描Bean的方式.这样的话,那就交由Spring AoP容器管理. 另外需要引用 aspectJ 的 jar 包:

  • 详解Spring的两种代理方式:JDK动态代理和CGLIB动态代理

    代理模式 代理模式的英文叫做Proxy或Surrogate,中文都可译为"代理",所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动.在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用 A. 抽象主题角色 声明了真实主题和代理主题的共同接口,这样一来在任何可以使用真实主题的地方都可以是使用代理主题 B. 代理主题(Proxy)角色: 代理主题角色内部含有对真实主题的引用,从而可以在任何时候操作真实主题对象:代理主题角

  • 浅谈Spring的两种事务定义方式

    一.声明式 这种方法不需要对原有的业务做任何修改,通过在XML文件中定义需要拦截方法的匹配即可完成配置,要求是,业务处理中的方法的命名要有规律,比如setXxx,xxxUpdate等等.详细配置如下: <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="

  • Spring Boot 项目启动自动执行方法的两种实现方式

    目录 实际应用场景: 第一种实现ApplicationRunner接口 第二种实现CommandLineRunner接口 对比: 注意: 实际应用场景: springboot项目启动成功后执行一段代码,如系统常量,配置.代码集等等初始化操作:执行多个方法时,执行顺序使用Order注解或Order接口来控制. Springboot给我们提供了两种方式 第一种实现ApplicationRunner接口 package org.mundo.demo.core; import org.springfra

  • 详解spring security四种实现方式

    spring security实现方式大致可以分为这几种: 1.配置文件实现,只需要在配置文件中指定拦截的url所需要权限.配置userDetailsService指定用户名.密码.对应权限,就可以实现. 2.实现UserDetailsService,loadUserByUsername(String userName)方法,根据userName来实现自己的业务逻辑返回UserDetails的实现类,需要自定义User类实现UserDetails,比较重要的方法是getAuthorities()

  • 详解springboot集成websocket的两种实现方式

    WebSocket跟常规的http协议的区别和优缺点这里大概描述一下 一.websocket与http http协议是用在应用层的协议,他是基于tcp协议的,http协议建立链接也必须要有三次握手才能发送信息.http链接分为短链接,长链接,短链接是每次请求都要三次握手才能发送自己的信息.即每一个request对应一个response.长链接是在一定的期限内保持链接.保持TCP连接不断开.客户端与服务器通信,必须要有客户端发起然后服务器返回结果.客户端是主动的,服务器是被动的.  WebSock

  • Spring Boot两种全局配置和两种注解的操作方法

    目录 零.学习目标 一.全局配置文件概述 二.Application.properties配置文件 1.配置tomcat端口号和web虚拟路径 2.对象类型的配置与使用 3.两种属性注解方式的对比 三.Application.yaml配置文件 四.两种配置文件的比较 五.课后作业 零.学习目标 1.掌握application.properties配置文件 2.掌握application.yaml配置文件 3.掌握使用@ConfigurationProperties注入属性 4.掌握使用@Valu

  • AOP之事务管理<aop:advisor>的两种配置方式

    目录 AOP事务管理<aop:advisor>两种配置方式 方式一 方式二 hibernate事务配置Aop aop:advisor模式 AOP事务管理<aop:advisor>两种配置方式 方式一 @transactionManagerbean.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.o

  • SpringBoot多数据源的两种实现方式实例

    目录 前言 基于dynamic-datasource实现多数据源 dynamic-datasource介绍 dynamic-datasource特性 使用 @DS 切换数据源 @DS使用实例 基于AOP手动实现多数据源 总结 前言 公司项目有连接多个不同数据库的需求,特研究了一下,根据网上的资料,造了一个基于AOP方式的数据源切换轮子,但继续探索,突然发现有开源的多数据源管理启动器.不过,本篇两种方式都会介绍. 基于dynamic-datasource实现多数据源 dynamic-datasou

随机推荐