消除hiberante.hbm.xml配置
注释语法越来越多的被业界所使用,并且注释配置相对于 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里面配置的指向的数据库表单结构的信息。
-
package com.alcor.web.hibernate;
-
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;
-
-
-
- @Entity
- @Table(name = "alcor_t_citys", catalog = "alcorweb")
-
public class AlcorTCitys implements java.io.Serializable {
-
-
private String cityCode;
-
private AlcorTProvinces alcorTProvinces;
-
private String cityName;
-
private Set<AlcotTDistrict> alcotTDistricts = new HashSet<AlcotTDistrict>(0);
-
-
-
public AlcorTCitys() {
-
}
-
-
public AlcorTCitys(String cityCode, AlcorTProvinces alcorTProvinces,
-
String cityName) {
-
this.cityCode = cityCode;
-
this.alcorTProvinces = alcorTProvinces;
-
this.cityName = cityName;
-
}
-
-
public AlcorTCitys(String cityCode, AlcorTProvinces alcorTProvinces,
-
String cityName, Set<AlcotTDistrict> alcotTDistricts) {
-
this.cityCode = cityCode;
-
this.alcorTProvinces = alcorTProvinces;
-
this.cityName = cityName;
-
this.alcotTDistricts = alcotTDistricts;
-
}
-
-
@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层的功能能够正常使用。恭喜你。迈出了成功的第一步。
分享到:
相关推荐
这个jar文件包含Spring一整套mock类来辅助应用的测试。Spring测试套件使用了其中大量mock类,这样测试就更加简单。模拟HttpServletRequest和HttpServletResponse类在Web应用单元测试是很方便的。 如何选择这些...
基于 spring2.5 hibernate3.3 jpa 的annotation注解来减少配置文件的大小 通过jersey实现restful形式请求
赠送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依赖信息文件:...
java运行依赖jar包
Struts2+Spring2.5+Hibernate3(JPA)+ExtJS3基本后台
Struts1.3 spring2.5 JPA 所需jia包
Spring2.5整合JPA(Hibernate实现)所需的JAR包
ng-spring-boot, Spring Boot Spring Data JPA AngularJS示例 采用 Spring Boot 和AngularJS的快速Prototype快速 Prototype这个例子演示了英镑 Spring Boot Spring Data JPA 和前端可以一起用来编写web应用程序的...
spring data jpa最新版本1.8.0,包含了spring-data-jpa-1.8.0.RELEASE.jar,spring-data-jpa-1.8.0.RELEASE-javadoc.jar以及 spring-data-jpa-1.8.0.RELEASE-sources.jar文档和源代码
一、整合开发时Hibernate、Spring需要的JAR文件。 hibernate核心安装包下的(下载路径:http://www.hibernate.org/,点击“Hibernate Core”右边的“Downloads”): hibernate3.jar lib\bycode\cglib\hibernate-...
这是jsf+spring2.5+jpa(hibernate)的jar包,很多人为了jsj环境而配置半天,在此提供jar包共享。注:除了ajax4jsf和tomahawk-1.1.3.jar,因为csdn只让我上传20mb,大家自己可以下一下自己试试。
管理系统系列--基于 Spring Boot、 Spring Data JPA、 Spring Security、V
Spring Boot JPAHibernate查询方法 Spring Data JPA是提供各种API来执行CRUD操作的Spring Data模块之一.Spring Data JPA主要用于存储库层的开发。 在Spring Data中,我们可以定义存储库接口和方法来检索数据。 所有...
Struts1.3+spring2.5+JPA(hibernate) 实现的一个小示例,比较适合初学者和整合配置查询。
5-Spring-Boot(五):spring data jpa的使用.docx5-Spring-Boot(五):spring data jpa的使用.docx5-Spring-Boot(五):spring data jpa的使用.docx5-Spring-Boot(五):spring data jpa的使用.docx5-Spring-Boot(五):...
java运行依赖jar包
Spring Data JPA API。 Spring Data JPA 开发文档。 官网 Spring Data JPA API。
java运行依赖jar包
spring-data-commons-1.7.2.RELEASEspring-data-jpa-1.5.2.RELEASE-java datajpa
spring注解完整版+spring data jpa官方文档中文翻译+JPA2.0官方文档 文档内容齐全 值得参考学习