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

使用注释消除hibernate中配置文件 - Spring 2.5 JPA hibernate 使用方法的点滴整理(一)使用注释消除hibernate中配置文件

    博客分类:
  • JPA
阅读更多
以下几篇文章简单的介绍一下jpa 和 spring2.5 hibernate3.2 整合配置的一个过程。纯粹个人经验只谈。如果有错误,请各位留言指出。


本系列重点是涉及 配置过程 ,对注释的用法不多介绍。


注释语法越来越多的被业界所使用,并且注释配置相对于 XML 配置具有很多的优势:它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作。注释和 Java 代码位于一个文件中,而 XML 配置采用独立的配置文件,大多数配置信息在程序开发完成后都不会调整,如果配置信息和 Java 代码放在一起,有助于增强程序的内聚性。而采用独立的 XML 配置文件,程序员在编写一个功能时,往往需要在程序文件和配置文件中不停切换,这种思维上的不连贯会降低开发效率。因此在很多情况下,注释配置比 XML 配置更受欢迎,注释配置有进一步流行的趋势。Spring 2.5 的一大增强就是引入了很多注释类,现在您已经可以使用注释配置完成大部分 XML 配置的功能。



首先,我们已经通过 传统的spring +hibernate方式构架成功了一个应用的后台体系。
这个体系里面 有这样几个重要的配置文件。
hibernate.cfg.xml 。
里面通过 配置 mapping来指向每张数据表单生成配置文件.xxxx.hbm.xml文件
applicaitonContex.xml。
里面通过定义一个一个bean 来配置 各个需要用到的 DAO 和 Service。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans >
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="configLocation"
            value="classpath:hibernate.cfg.xml">
        </property>
    </bean>
    
    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory"> 
            <ref local="sessionFactory"/>
        </property> 
    </bean>

    <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
        <!--  事务拦截器bean需要依赖注入一个事务管理器 -->
        <property name="transactionManager">
            <ref local="transactionManager"/>
        </property>
        <property name="transactionAttributes">
            <!--  下面定义事务传播属性-->
            <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="*">PROPAGATION_REQUIRED,readOnly</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="McCityInfoDAO"
        class="com.firemax.manatee.hibernate.McCityInfoDAO">
        <property name="sessionFactory">
            <ref bean="sessionFactory" />
        </property>
    </bean>
    <bean id="McMaterialInfoDAO"
        class="com.firemax.manatee.hibernate.McMaterialInfoDAO">
        <property name="sessionFactory">
            <ref bean="sessionFactory" />
        </property>
    </bean>
</beans>

hibernate.cfg.xml要配置这么多 xxxxx.hbm.xml文件。每次数据结构发生变化的时候。要重新去改写pojo和dao以及这些xxxxx.hbm.xml
那么好。我们现在就用 注解的力量 去把这部分工作简化。
首先我们需要

hibernate3.2 以上版本的jar

jdk 5 以上的环境
spring2
然后我们修改pojo的java类。加上注解。使起通过注解来取代原先要xxxx.hbm.xml里面配置的指向的数据库表单结构的信息


import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 * AlcorTCitys entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "alcor_t_citys", catalog = "alcorweb")
public class AlcorTCitys implements java.io.Serializable {

    // Fields

    private String cityCode;
    private AlcorTProvinces alcorTProvinces;
    private String cityName;
    private Set<AlcotTDistrict> alcotTDistricts = new HashSet<AlcotTDistrict>(0);

    // Constructors

    /** default constructor */
    public AlcorTCitys() {
    }

    /** minimal constructor */
    public AlcorTCitys(String cityCode, AlcorTProvinces alcorTProvinces,
            String cityName) {
        this.cityCode = cityCode;
        this.alcorTProvinces = alcorTProvinces;
        this.cityName = cityName;
    }

    /** full constructor */
    public AlcorTCitys(String cityCode, AlcorTProvinces alcorTProvinces,
            String cityName, Set<AlcotTDistrict> alcotTDistricts) {
        this.cityCode = cityCode;
        this.alcorTProvinces = alcorTProvinces;
        this.cityName = cityName;
        this.alcotTDistricts = alcotTDistricts;
    }

    // Property accessors
    @Id
    @Column(name = "city_code", unique = true, nullable = false, length = 32)
    public String getCityCode() {
        return this.cityCode;
    }

    public void setCityCode(String cityCode) {
        this.cityCode = cityCode;
    }

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "province_code", nullable = false)
    public AlcorTProvinces getAlcorTProvinces() {
        return this.alcorTProvinces;
    }

    public void setAlcorTProvinces(AlcorTProvinces alcorTProvinces) {
        this.alcorTProvinces = alcorTProvinces;
    }

    @Column(name = "city_name", nullable = false, length = 64)
    public String getCityName() {
        return this.cityName;
    }

    public void setCityName(String cityName) {
        this.cityName = cityName;
    }

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "alcorTCitys")
    public Set<AlcotTDistrict> getAlcotTDistricts() {
        return this.alcotTDistricts;
    }

    public void setAlcotTDistricts(Set<AlcotTDistrict> alcotTDistricts) {
        this.alcotTDistricts = alcotTDistricts;
    }

}


修改hibernate.cfg.xml中的定义方式,把原来的maping source=“xxxxx.hbm.xml”修改成
<mapping class="com.alcor.web.hibernate.AlcorTCitys" />


这样我们就可以把原来的 xxxxx.hbm.xml全部删除了。
经过这个步骤。如果你原有的servcice层的功能能够正常使用。恭喜你。迈出了成功的第一步。


本文来自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依赖信息文件:...

    struts2-spring2.5-hibernate3.3.rar

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

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

    SpringMVC +Hibernate JPA+Spring-data-jpa实例

    1. **配置文件**:设置SpringMVC、Hibernate JPA和Spring Data JPA的相关配置,如数据源、实体扫描路径、JPA配置等。 2. **实体类**:定义与数据库表对应的实体类,包含属性和注解。 3. **Repository接口**:定义...

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

    总的来说,`hibernate-jpa-2.1-api-1.0.0.final.jar`为开发者提供了丰富的JPA 2.1特性的实现,使得在Java项目中使用Hibernate进行数据库操作变得更加便捷和标准化。通过深入理解和熟练运用这个API,我们可以构建出...

    Maven整合Spring+SpringMVC+Hibernate+SpringDataJPA

    在现代Java Web开发中,"Maven整合Spring+SpringMVC+Hibernate+SpringDataJPA"是一个常见的架构组合,被广泛应用于构建企业级应用程序。这个组合通常被称为"SSM",其中"M"代表Maven,"S"代表Spring,包括Spring核心...

    Spring + JPA + Hibernate配置

    在Maven的pom.xml文件中,添加Spring、JPA和Hibernate的依赖项。这可能包括Spring的核心模块、数据JPA模块以及Hibernate的实现: ```xml &lt;groupId&gt;org.springframework.boot &lt;artifactId&gt;spring-boot-starter-...

    基于maven集成spring5 hibernate5 spring-data-jpa2 H2的简单实例

    网上找不到这样的例子,只好我自已整理一份了。 该demo是基于maven集成spring5、hibernate5、spring-data-jpa2、H2的可以运行的最基本的main例子。 希望能对大家有帮助。

    ssh三大框架整合s2sh整合总结(struts2.1.8-spring2.5-hibernate3.2)

    5. **整合Spring与Hibernate**:配置Hibernate的SessionFactory Bean,使用Hibernate的Template或JPA API进行数据操作。 6. **编写Action、Service和DAO**:定义Action类处理请求,Service层封装业务逻辑,DAO层负责...

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

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

    hibernate-jpa-2.1-api-1.0.0.Final.jar

    本文将深入探讨`hibernate-jpa-2.1-api-1.0.0.Final.jar`这个库,了解其源码中的关键概念和API,并结合具体应用,阐述如何在实际项目中有效利用这些知识。 首先,Hibernate-JPA 2.1 API 是Hibernate对Java ...

    Spring2.5整合JPA

    2. **配置JPA**:在Spring的配置文件中,需要配置数据源、JPA供应商(例如Hibernate)、实体扫描路径等。这可以通过XML配置或者基于注解的配置完成。 3. **定义实体**:创建表示数据库表的Java类,并使用JPA的注解...

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

    在JPA集成方面,Spring 2.5提供了一个强大的抽象层,允许开发者在不直接接触JPA API的情况下,通过Spring的声明式事务管理、数据访问对象(DAO)抽象和模板方法来使用JPA。 **Java Persistence API (JPA)** JPA是...

    Spring2.5 + JPA(Hibernate)实现

    标题 "Spring2.5 + JPA(Hibernate)实现" 涉及到的是在Java开发环境中,使用Spring框架的2.5版本与Java Persistence API (JPA) 的一种集成方式,其中Hibernate作为JPA的提供商。这篇博文可能是指导开发者如何在项目中...

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

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

    Spring2.5+Hibernate3.2开发手册

    - **Spring2.5中文开发参考手册.chm**:这份文档会详细介绍Spring 2.5 的核心概念、配置、API使用以及如何在实际项目中应用Spring框架。 - **Hibernate_3.2.0_api.chm**:这份文档是Hibernate 3.2.0 的API参考,包含...

    Struts1.3 spring2.5 JPA 所需jia包

    为了正确运行一个使用Struts1.3、Spring2.5和JPA的项目,需要将这些jar文件添加到项目的类路径中。确保所有必要的依赖都被包含,否则可能会出现类找不到或者版本冲突等问题。 在实际开发中,为了保证项目的稳定性...

Global site tag (gtag.js) - Google Analytics