在使用jsf+Spring+Hibernate做项目时,发现配置Hibernate的实体映射文件相当繁琐.前段时间做EJB时,一直采用的是JPA的注解方式.相比较之下,少写不少代码.于是花了些时间.将项目中原来使用xml配置的方式转成使用Annotation方式.记录如下:
<!-- Hibernate session factory --> <!-- For using no-Annotation <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> --> <!-- using for Annotation --> < bean id ="sessionFactory" class ="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" >
注:为了使用Annotation,需将原HibernateSessionFactory.xml中sessionFactory的实现类改成:org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean
<!-- <property name="mappingResources"> <list> <value>com/singtel/config/hibernate/Customer.hbm.xml </value> </list> </property> --> <!-- Using for Annotation --> < property name ="annotatedClasses" > < list > < value > com.singtel.system.model.Customer </ value > </ list > </ property >
注:原来使用mappingResources来配对hbm.xml文件,现用annotatedClasses来直接映射到指定Class.
Or:也可通过通配符来自动扫描类包
< property name ="packagesToScan" > < list > < value > com.singtel.system.model.* </ value > </ list > </ property >
注:packagesToScan是Spring 2.5.6新特性(推荐)
接下来要做的就是在java实体中增加注解.
package com.singtel.system.model; import java.io.Serializable; import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; @Entity(name ="Customer" ) @Table(name ="CUSTOMER_LWC" ) public class Customer implements Serializable{ @Id @Column(name ="CUSTOMER_ID",columnDefinition = "Integer" ) @GeneratedValue(strategy = GenerationType.AUTO) public long customerId; @Column(name ="CUSTOMER_ADDRESS",columnDefinition = "varchar2(255)", nullable = false ) public String address; @Column(name ="CUSTOMER_PASSWORD",columnDefinition = "varchar2(45)", nullable = false ) public String password; @Column(name = "CREATED_DATE", nullable = false ) @Temporal(TemporalType.TIMESTAMP) public Date createdDate; public long getCustomerId() { return customerId; } public void setCustomerId( long customerId) { this .customerId = customerId; } public String getPassword() { return password; } public void setPassword(String password) { this .password = password; } public String getAddress() { return address; } public void setAddress(String address) { this .address = address; } public Date getCreatedDate() { return createdDate; } public void setCreatedDate(Date createdDate) { this .createdDate = createdDate; } }
删除原有hbm.xml.Ok