`
guyinglong
  • 浏览: 73913 次
  • 性别: Icon_minigender_1
  • 来自: 江西
社区版块
存档分类
最新评论

注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(二):进一步消除 hibernate.cfg.xml

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


依然是利用注解注入的方式。通过jpa 我们可以把 hibernate.cfg.xml中那些 mapping classes再次简化与无形。
在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"
    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"
    xmlns:tx="http://www.springframework.org/schema/tx">

<!--##################-->
    <bean id="entityManagerFactory"
        class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
        <property name="persistenceUnitName" value="testerPU" />
    </bean>
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>

    <tx:annotation-driven transaction-manager="transactionManager" />
<!--##################-->
    <bean id="transactionInterceptor"
        class="org.springframework.transaction.interceptor.TransactionInterceptor">
        <!-- 事务拦截器bean需要依赖注入一个事务管理器 -->
        <property name="transactionManager">
            <ref local="transactionManager" />
        </property>
        <property name="transactionAttributes">
            <!-- 下面定义事务(指service里面的方法)传播属性 -->
            <props>
                <prop key="insert*">PROPAGATION_REQUIRED</prop>
                <prop key="update*">PROPAGATION_REQUIRED</prop>
                <prop key="save*">PROPAGATION_REQUIRED</prop>
                <prop key="add*">PROPAGATION_REQUIRED</prop>
                <prop key="update*">PROPAGATION_REQUIRED</prop>
                <prop key="remove*">PROPAGATION_REQUIRED</prop>
                <prop key="delete*">PROPAGATION_REQUIRED</prop>
                <prop key="get*">PROPAGATION_REQUIRED,readOnly
                </prop>
                <prop key="find*">PROPAGATION_REQUIRED,readOnly
                </prop>
                <prop key="load*">PROPAGATION_REQUIRED,readOnly
                </prop>
                <prop key="change*">PROPAGATION_REQUIRED</prop>
                <prop key="count*">PROPAGATION_REQUIRED</prop>
                <prop key="*">PROPAGATION_REQUIRED</prop>
            </props>
        </property>
    </bean>
    <!-- 定义自动代理BeanNameAutoProxyCreator -->
    <bean id="beanNameAutoProxyCreator"
        class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
        <!-- 指定对满足哪些bean name的bean自动生成业务代理 -->
        <property name="beanNames">
            <list>
                <value>*Service</value>
            </list>
        </property>
        <!-- 下面定义BeanNameAutoProxyCreator所需的事务拦截器  -->
        <property name="interceptorNames">
            <list>
                <!-- 此处可增加其他新的Interceptor -->
                <value>transactionInterceptor</value>
            </list>
        </property>
    </bean>





    <bean id="AlcorTCountriesDAO" class="com.firemax.test.hibernate.AlcorTCountriesDAO">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>
    <bean id="AlcorTProvincesDAO" class="com.firemax.test.hibernate.AlcorTProvincesDAO">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>
    <bean id="AlcotTDistrictDAO" class="com.firemax.test.hibernate.AlcotTDistrictDAO">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>
    <bean id="AlcorTCitysDAO" class="com.firemax.test.hibernate.AlcorTCitysDAO">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>

    <bean id="CountryService" class="com.firemax.test.service.CountryService">
        <property name="alcorTCountriesDAO" ref="AlcorTCountriesDAO" />
        <property name="alcorTProvincesDAO" ref="AlcorTProvincesDAO" />
        <property name="alcorTCitysDAO" ref="AlcorTCitysDAO" />
        <property name="alcotTDistrictDAO" ref="AlcotTDistrictDAO" />
    </bean>

</beans>


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


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

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
    http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
    version="1.0">

    <persistence-unit name="testerPU"
        transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <class>com.firemax.test.hibernate.AlcorTCountries</class>
        <class>com.firemax.test.hibernate.AlcorTProvinces</class>
        <class>com.firemax.test.hibernate.AlcotTDistrict</class>
        <class>com.firemax.test.hibernate.AlcorTCitys</class>
        <properties>
            <property name="hibernate.connection.driver_class"
                value="com.mysql.jdbc.Driver" />
            <property name="hibernate.connection.url"
                value="jdbc:mysql://localhost:3306/alcorweb?useUnicode=true&characterEncoding=utf-8" />
            <property name="hibernate.connection.username"
                value="alcorweb" />
            <property name="hibernate.connection.password"
                value="alcorweb" />
            <property name="hibernate.connection.provider_class" value="org.hibernate.connection.C3P0ConnectionProvider"/>
            <property name="hibernate.c3p0.max_size" value="100"/>
            <property name="hibernate.c3p0.min_size"  value="20"/>
            <property name="hibernate.c3p0.timeout"   value="120"/>
            <property name="hibernate.c3p0.max_statements" value="0"/>
            <property name="hibernate.c3p0.idle_test_period"  value="120"/>
            <property name="hibernate.c3p0.acquire_increment" value="5  "/>

            <property name="hibernate.cache.provider_class" value="org.hibernate.cache.EhCacheProvider"/>
            <property name="hibernate.cache.use_query_cache" value="false"/>
            <property name="hibernate.show_sql" value="false"/>
            <property name="hibernate.useUnicode" value="true"/>
            <property name="hibernate.characterEncoding" value="utf8"/>
        </properties>
    </persistence-unit>
</persistence>


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

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/remote_roamer
分享到:
评论

相关推荐

    hibernate-jpa-2.1-api-1.0.2.Final-API文档-中文版.zip

    赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...

    hibernate-jpa-2.1-api-1.0.2.Final-API文档-中英对照版.zip

    赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...

    解决SpringDataJPA报错:org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null w

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/...

    hibernate jar包:hibernate-commons-annotations-4.0.1.Final.jar等

    Hibernate.jar包,Hibernate可以应用在任何使用JDBC的场合,包含 hibernate-commons-annotations-4.0.1.Final.jar hibernate-core-4.1.12.Final.jar hibernate-ehcache-4.1.12.Final.jar hibernate-entitymanager-...

    Spring2.5+Hibernate3.2开发手册

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

    hibernate.5.1.0.jar全部

    包含hibernate所有所需jar包还有一些其他包日志包、jpa支持包等: 列如:hibernate-core-5.1.0.Final.jar ...hibernate-jpa-2.1-api-1.0.0.Final.jar hibernate-java8-5.1.0.Final.jar ........ 总共41个

    Struts2+Spring2.5+Hibernate3.3整合开发之Sring与Hibernate整合

    一、整合开发时Hibernate、Spring需要的JAR文件。 hibernate核心安装包下的(下载路径:http://www.hibernate.org/,点击“Hibernate Core”右边的“Downloads”): hibernate3.jar lib\bycode\cglib\hibernate-...

    hibernate-jpa-2.1-api-1.0.0.final-sources.jar

    hibernate-jpa-2.1-api-1.0.0.final-sources.jar 源码 hibernate-jpa-2.1-api-1.0.0.final-sources.jar 源码

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

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

    Struts2.0+spring2.5+hibernate3.2

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

    jersey+spring2.5+hibernate3.3+jpa

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

    struts2-spring2.5-hibernate3.3.rar

    这个压缩包中的资源可能包括配置文件(如struts.xml、spring-servlet.xml、hibernate.cfg.xml)、实体类、DAO(Data Access Object)层、Service层、Action层以及视图层的JSP文件。开发者可以通过这些文件了解如何将...

    Spring之Spring2.5集成Hibernate3.6

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

    hibernate-jpa-2.1-api-1.0.0.final.jar.zip

    - **配置**: 开发者需要在pom.xml或build.gradle文件中添加`hibernate-jpa-2.1-api-1.0.0.final.jar`依赖,然后在应用配置中指定Hibernate作为JPA提供商。 - **实体类**: 使用@Entity注解标记Java类为JPA实体,并...

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

    3. **配置Hibernate**:创建`hibernate.cfg.xml`,定义数据库连接信息、实体类映射(hbm.xml文件)等。实体类映射文件描述了Java类与数据库表之间的关系。 4. **实体类和映射文件**:编写Java实体类,这些类将作为...

    spring-jpa(hibernate实现)环境搭建

    标题 "spring-jpa(hibernate实现)环境搭建" 涉及到的是在Java开发中使用Spring Data JPA和Hibernate来构建数据访问层的过程。Spring Data JPA是Spring框架的一部分,它提供了一种简化的方式来操作数据库,而...

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

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

    hibernate-jpa-2.0-api-1.0.1.Final-sources.jar

    hibernate-jpa-2.0-api-1.0.1.Final-sources.jar hibernate jpa 源代码

    springboot+jpa(hibernate配置redis为二级缓存) springboot2.1.4

    在本文中,我们将深入探讨如何在Spring Boot 2.1.4.RELEASE项目中结合JPA(Java Persistence API)和Hibernate实现Redis作为二级缓存。首先,我们需要理解这些技术的基本概念。 Spring Boot 是一个用于简化Spring...

    ecside+struts2+spring2.5+hibernate3.2

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

Global site tag (gtag.js) - Google Analytics