`

注解的力量2 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(二)转

阅读更多
通过上面一步骤。我们简化了hibernate中扰人的 xxxxx.hbm.xml文件。那么是否可以再进行简化呢?
那么,我们在这一步骤的目的,就是把整个 hibernate.cfg.xml都给简化了。

依然是利用注解注入的方式。通过jpa 我们可以把 hibernate.cfg.xml中那些 mapping classes再次简化与无形。

  1. 在applicationContext.xml中进行如下配置
    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
    5.     xmlns:tx="http://www.springframework.org/schema/tx">
    6.     <bean id="entityManagerFactory"
    7.         class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
    8.         <property name="persistenceUnitName" value="testerPU" />
    9.     </bean>
    10.     <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    11.         <property name="entityManagerFactory" ref="entityManagerFactory" />
    12.     </bean>
    13.     <tx:annotation-driven transaction-manager="transactionManager" />
    14.     <bean id="transactionInterceptor"
    15.         class="org.springframework.transaction.interceptor.TransactionInterceptor">
    16.         <!-- 事务拦截器bean需要依赖注入一个事务管理器 -->
    17.         <property name="transactionManager">
    18.             <ref local="transactionManager" />
    19.         </property>
    20.         <property name="transactionAttributes">
    21.             <!-- 下面定义事务(指service里面的方法)传播属性 -->
    22.             <props>
    23.                 <prop key="insert*">PROPAGATION_REQUIRED</prop>
    24.                 <prop key="update*">PROPAGATION_REQUIRED</prop>
    25.                 <prop key="save*">PROPAGATION_REQUIRED</prop>
    26.                 <prop key="add*">PROPAGATION_REQUIRED</prop>
    27.                 <prop key="update*">PROPAGATION_REQUIRED</prop>
    28.                 <prop key="remove*">PROPAGATION_REQUIRED</prop>
    29.                 <prop key="delete*">PROPAGATION_REQUIRED</prop>
    30.                 <prop key="get*">PROPAGATION_REQUIRED,readOnly
    31.                 </prop>
    32.                 <prop key="find*">PROPAGATION_REQUIRED,readOnly
    33.                 </prop>
    34.                 <prop key="load*">PROPAGATION_REQUIRED,readOnly
    35.                 </prop>
    36.                 <prop key="change*">PROPAGATION_REQUIRED</prop>
    37.                 <prop key="count*">PROPAGATION_REQUIRED</prop>
    38.                 <prop key="*">PROPAGATION_REQUIRED</prop>
    39.             </props>
    40.         </property>
    41.     </bean>
    42.     <!-- 定义自动代理BeanNameAutoProxyCreator -->
    43.     <bean id="beanNameAutoProxyCreator"
    44.         class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
    45.         <!-- 指定对满足哪些bean name的bean自动生成业务代理 -->
    46.         <property name="beanNames">
    47.             <list>
    48.                 <value>*Service</value>
    49.             </list>
    50.         </property>
    51.         <!-- 下面定义BeanNameAutoProxyCreator所需的事务拦截器  -->
    52.         <property name="interceptorNames">
    53.             <list>
    54.                 <!-- 此处可增加其他新的Interceptor -->
    55.                 <value>transactionInterceptor</value>
    56.             </list>
    57.         </property>
    58.     </bean>
    59.     <bean id="AlcorTCountriesDAO" class="com.firemax.test.hibernate.AlcorTCountriesDAO">
    60.         <property name="entityManagerFactory" ref="entityManagerFactory" />
    61.     </bean>
    62.     <bean id="AlcorTProvincesDAO" class="com.firemax.test.hibernate.AlcorTProvincesDAO">
    63.         <property name="entityManagerFactory" ref="entityManagerFactory" />
    64.     </bean>
    65.     <bean id="AlcotTDistrictDAO" class="com.firemax.test.hibernate.AlcotTDistrictDAO">
    66.         <property name="entityManagerFactory" ref="entityManagerFactory" />
    67.     </bean>
    68.     <bean id="AlcorTCitysDAO" class="com.firemax.test.hibernate.AlcorTCitysDAO">
    69.         <property name="entityManagerFactory" ref="entityManagerFactory" />
    70.     </bean>
    71.     <bean id="CountryService" class="com.firemax.test.service.CountryService">
    72.         <property name="alcorTCountriesDAO" ref="AlcorTCountriesDAO" />
    73.         <property name="alcorTProvincesDAO" ref="AlcorTProvincesDAO" />
    74.         <property name="alcorTCitysDAO" ref="AlcorTCitysDAO" />
    75.         <property name="alcotTDistrictDAO" ref="AlcotTDistrictDAO" />
    76.     </bean>
    77. </beans>


    注意红色部分。这部分和(一)里面提到的那个applicationContext.xml中使用的bean是不同的。这里面已经用到了spring 的jpa部分。
    其中 <property name="persistenceUnitName" value="testerPU" />  是指向了一个 jpa的PU(Persistent Units)

    那么这个 是在哪里定义的呢?
    这里的定义是在你的 classes(src)目录下META-INF下的persistence.xml文件中来定义
    persistence.xml文件内容如下:

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <persistence xmlns="http://java.sun.com/xml/ns/persistence"
    3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4.     xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
    5.     http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
    6.     version="1.0">
    7.     <persistence-unit name="testerPU"
    8.         transaction-type="RESOURCE_LOCAL">
    9.         <provider>org.hibernate.ejb.HibernatePersistence</provider>
    10.         <class>com.firemax.test.hibernate.AlcorTCountries</class>
    11.         <class>com.firemax.test.hibernate.AlcorTProvinces</class>
    12.         <class>com.firemax.test.hibernate.AlcotTDistrict</class>
    13.         <class>com.firemax.test.hibernate.AlcorTCitys</class>
    14.         <properties>
    15.             <property name="hibernate.connection.driver_class"
    16.                 value="com.mysql.jdbc.Driver" />
    17.             <property name="hibernate.connection.url"
    18.                 value="jdbc:mysql://localhost:3306/alcorweb?useUnicode=true&characterEncoding=utf-8" />
    19.             <property name="hibernate.connection.username"
    20.                 value="alcorweb" />
    21.             <property name="hibernate.connection.password"
    22.                 value="alcorweb" />
    23.             <property name="hibernate.connection.provider_class" value="org.hibernate.connection.C3P0ConnectionProvider"/>
    24.             <property name="hibernate.c3p0.max_size" value="100"/>
    25.             <property name="hibernate.c3p0.min_size"  value="20"/>
    26.             <property name="hibernate.c3p0.timeout"   value="120"/>
    27.             <property name="hibernate.c3p0.max_statements" value="0"/>
    28.             <property name="hibernate.c3p0.idle_test_period"  value="120"/>
    29.             <property name="hibernate.c3p0.acquire_increment" value="5  "/>
    30.             <property name="hibernate.cache.provider_class" value="org.hibernate.cache.EhCacheProvider"/>
    31.             <property name="hibernate.cache.use_query_cache" value="false"/>
    32.             <property name="hibernate.show_sql" value="false"/>
    33.             <property name="hibernate.useUnicode" value="true"/>
    34.             <property name="hibernate.characterEncoding" value="utf8"/>
    35.         </properties>
    36.     </persistence-unit>
    37. </persistence>

    仔细观察他的代码,我们发现其实和hibernate.cfg.xml和相似。都有指向pojo的定义 和 database连接的定义。先别着急。我们这次的优化,就先完成这个目标。主要是引入的spring的jpa框架。
    后面将介绍更进一步的优化。来展示jpa 和 注释注入的能力。
分享到:
评论

相关推荐

    Spring2.5+Hibernate3.2开发手册

    Spring 2.5 和 Hibernate 3.2 是两个在企业级Java应用开发中非常重要的框架。Spring 是一个全面的后端应用框架,提供依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)以及大量的集成支持。而Hibernate 则是...

    struts2.0 spring2.5 hibernate3.2 注解最新框架

    Struts2.0、Spring2.5和Hibernate3.2是经典的Java企业级开发框架,它们在2000年代末至2010年初广泛应用于构建大型Web应用程序。这三大框架的集成提供了完整的MVC(Model-View-Controller)架构,支持服务层和持久层...

    jersey+spring2.5+hibernate3.3+jpa

    标题 "jersey+spring2.5+hibernate3.3+jpa" 指的是一种集成技术,将轻量级的RESTful服务框架Jersey、企业级应用框架Spring 2.5、持久层框架Hibernate 3.3以及Java Persistence API(JPA)结合在一起,以实现高效且...

    Spring之Spring2.5集成Hibernate3.6

    这篇博客“Spring之Spring2.5集成Hibernate3.6”主要探讨了如何将两个经典的开源框架——Spring 2.5和Hibernate 3.6进行整合,以实现数据持久化的高效管理。 Spring 2.5版本是Spring框架的一个重要里程碑,它引入了...

    spring2.5-hibernate3.04_API

    《Spring 2.5与Hibernate 3.04 API详解》 在软件开发领域,Spring框架和Hibernate ORM工具是Java开发者的重要伙伴。本资源“spring2.5-hibernate3.04_API”提供了这两个关键库的API帮助文档,旨在帮助开发者深入...

    Struts2.0+spring2.5+hibernate3.2

    Struts2.0、Spring2.5和Hibernate3.2是经典的Java企业级开发框架组合,通常被称为SSH(Struts2、Spring、Hibernate)集成框架。这个组合在2000年代末到2010年代初广泛应用于构建大型、复杂的企业级Web应用。SSH框架...

    struts2.1+spring2.5+hibernate3.3整合之第一步(spring2.5+hibernate3.3)

    本教程将探讨如何将Struts2.1、Spring2.5和Hibernate3.3这三大流行框架进行整合,以构建一个强大的Java Web应用程序。首先,我们先关注Spring2.5与Hibernate3.3的整合,这是整个集成的第一步。 Spring2.5是Spring...

    spring2.5 + jpa(hibernate3) 实例源码

    【标题】"spring2.5 + jpa(hibernate3) 实例源码"涉及的核心技术是Spring 2.5框架与Java Persistence API (JPA)的整合,其中JPA的具体实现是Hibernate 3。这个实例提供了如何在Spring环境中配置和使用JPA进行数据库...

    Spring2.5 + JPA(Hibernate)实现

    标题 "Spring2.5 + JPA(Hibernate)实现" 指的是在Spring框架的2.5版本中集成Java Persistence API (JPA) 和Hibernate ORM框架来管理数据库操作。这通常涉及利用Spring的IoC(Inversion of Control)和AOP(Aspect ...

    ecside+struts2+spring2.5+hibernate3.2

    标题 "ecside+struts2+spring2.5+hibernate3.2" 提及的是一个基于Java的Web开发框架组合,这个组合是企业级应用的常见选择,特别是对于那些需要强大持久层、业务层和表现层管理的项目。让我们逐一深入探讨这四个关键...

    struts2+spring2.5+hibernate3.2 例子

    Struts2、Spring2.5和Hibernate3.2是经典的Java Web开发框架组合,它们各自在应用程序的不同层面提供了强大的功能。下面将详细解释这三个框架以及它们如何协同工作。 **Struts2** Struts2是一个基于MVC(Model-View...

    Struts2+Spring2.5+Hibernate3(JPA)+ExtJS3基本后台

    Struts2、Spring2.5、Hibernate3(JPA)和ExtJS3是构建现代企业级Web应用的四大核心技术,它们各自在应用架构中扮演着关键角色。下面将详细阐述这些技术及其组合使用时的基本概念和功能。 1. **Struts2**:Struts2...

    spring2.5 + hibernate3.2 实例源码

    标题 "spring2.5 + hibernate3.2 实例源码" 涉及到的是两个非常关键的Java企业级开发框架:Spring 2.5和Hibernate 3.2。这个实例源码提供了如何将这两个框架集成并进行实际应用的示例。 Spring 2.5是Spring框架的一...

    struts2-spring2.5-hibernate3.3.rar

    Struts2-Spring2.5-Hibernate3.3是一个经典的Java Web开发框架组合,通常被称为SSH框架。这个压缩包提供了这三个框架集成的完整资源,帮助开发者构建基于MVC(Model-View-Controller)架构的高效、可维护的Web应用...

    Spring2.5+Hibernate3.3+Struts1.3整合需要用到的所有jar文件

    Spring 2.5版本引入了许多增强的功能,如支持JSR-303 Bean Validation、改进的AOP代理、更灵活的XML配置以及基于注解的配置支持。这使得开发者可以更加方便地实现依赖注入,减少XML配置的工作量。 Hibernate 3.3...

    Spring2.5整合JPA

    **Spring 2.5 整合 JPA 概述** Spring 框架以其高度的灵活性和可扩展性,已经成为Java开发中不可或缺的部分。在Spring 2.5版本中,它进一步增强了对Java Persistence API (JPA)的支持,使得开发者能够更加方便地将...

    struts1+spring2.5+hibernate整合jar包

    Struts1、Spring2.5和Hibernate是Java Web开发中常用的三大框架,它们各自负责不同的职责,Struts1处理表现层逻辑,Spring2.5管理依赖注入和业务逻辑,Hibernate则专注于持久化层操作。将这三大框架整合在一起,可以...

    springMVC+hibernage+spring(基于spring2.5和hibernate3.0)jar包

    Spring MVC、Hibernate 和 Spring 是Java开发...尽管当前版本已经更新至Spring 5和Hibernate 5,但Spring 2.5和Hibernate 3.0的组合仍广泛应用于许多现有项目中,理解其工作原理和配置方法对于Java开发者来说至关重要。

    struts2+spring2.5+hibernate api

    Struts2、Spring2.5和Hibernate是Java开发中经典的三大框架,它们分别负责MVC模式中的动作控制、依赖注入以及持久化管理。这三大框架的整合使用,能够构建出高效、灵活的企业级应用。 **Struts2** 是一个基于MVC...

    整合Struts2,Spring2.5,Hibernate3.3操作参考

    **整合Struts2、Spring2.5与Hibernate3.3操作参考** 在Java Web开发中,Struts2、Spring和Hibernate是三个非常重要的框架,它们分别负责MVC(Model-View-Controller)模式中的控制层、业务逻辑层和服务数据访问层。...

Global site tag (gtag.js) - Google Analytics