Struts2.0+spring2.0+hibernate3.2 Annotation应用示例

本文介绍Hibernate 3.2中新增的注解(Annotation)功能,该功能简化了对象关系映射的配置过程。通过示例展示了如何使用注解定义实体类,并在Spring配置文件中设置SessionFactory以启用此功能。
hibernate3.2有个新功能叫做annotation,这个功能在ejb3.0就出现了。而且spring2.x版本也有这个功能,这个功能到底有什么作用,我们还是看看解释是什么:
在已经发布的JDK1.5(tiger)中增加新的特色叫 Annotation。Annotation提供一种机制,将程序的元素如:类,方法,属性,参数,本地变量,包和元数据联系起来。这样编译器可以将元数据存储在Class文件中。这样虚拟机和其它对象可以根据这些元数据来决定如何使用这些程序元素或改变它们的行为。
spring的配置文件比较复杂,所以这次先使用hibernate的annotation功能。

项目所需包:



先去掉我先前项目中的hibernate3.1,添加hibernate3.2,然后再下载hibernate-annotation,往lib文件夹中添加hibernate-annotations-3.3.0.jar,hibernate-commons-annotations.jar和ejb3-persistence.jar 。这样就可以使用hibernate的annotation了。

去掉products.hbm.xml文件,因为不需要了,我们现在只需要在products这个类中定义就可以了。代码如下:
package  com.game.products.model;

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  org.hibernate.annotations.GenericGenerator;


@Entity
@Table(name
= " products " )
public   class  Products {
    
//     Fields 
    @Id
    @GeneratedValue(generator 
=   " c-assigned " )
    @GenericGenerator(name 
=   " c-assigned " , strategy  =   " assigned " )
    @Column(name
= " game_id " )
    
private  String gameId; // 编号
    @Column(name = " game_name_cn " )
    
private  String gameNameCn; // 中文名称
    @Column(name = " game_name_en " )
    
private  String gameNameEn; // 英文名称
    @Column(name = " game_capacity " )
    
private  String gameCapacity; // 碟数
    @Column(name = " game_version " )
    
private  String gameVersion; // 版本
    @Column(name = " game_media " )
    
private  String gameMedia; // 介质
    @Column(name = " game_copyright " )
    
private  String gameCopyright; // 版权
    @Column(name = " game_price " )
    
private  String gamePrice; // 价格
    @Column(name = " game_content " )
    
private  String gameContent; // 攻略
    
    
//     Constructors
     public  Products(){}
    
    
//     Property accessors
    
    
public  String getGameCapacity() {
        
return  gameCapacity;
    }

    
public   void  setGameCapacity(String gameCapacity) {
        
this .gameCapacity  =  gameCapacity;
    }

    
    
public  String getGameId() {
        
return  gameId;
    }

    
public   void  setGameId(String gameId) {
        
this .gameId  =  gameId;
    }
    
    
    
public  String getGameNameCn() {
        
return  gameNameCn;
    }

    
public   void  setGameNameCn(String gameNameCn) {
        
this .gameNameCn  =  gameNameCn;
    }

    
    
public  String getGameNameEn() {
        
return  gameNameEn;
    }

    
public   void  setGameNameEn(String gameNameEn) {
        
this .gameNameEn  =  gameNameEn;
    }

    
    
public  String getGameVersion() {
        
return  gameVersion;
    }

    
public   void  setGameVersion(String gameVersion) {
        
this .gameVersion  =  gameVersion;
    }

    
    
public  String getGameMedia() {
        
return  gameMedia;
    }

    
public   void  setGameMedia(String gameMedia) {
        
this .gameMedia  =  gameMedia;
    }

    
    
public  String getGameCopyright() {
        
return  gameCopyright;
    }

    
public   void  setGameCopyright(String gameCopyright) {
        
this .gameCopyright  =  gameCopyright;
    }

    
    
public  String getGameContent() {
        
return  gameContent;
    }

    
public   void  setGameContent(String gameContent) {
        
this .gameContent  =  gameContent;
    }

    
    
public  String getGamePrice() {
        
return  gamePrice;
    }

    
public   void  setGamePrice(String gamePrice) {
        
this .gamePrice  =  gamePrice;
    }

}
 
注意类中的@符号没有,这就是annotation发挥作用的地方了,是不是很方便呢。

现在可以将com.game.bean.hibernate整个文件夹都去掉了,因为我们在spring的applicationContext中进行定义了。
修改applicationContext中的SessionFactory ,示例如下:
<!--  SessionFactory  -->
    
< bean id = " sessionFactory "   class = " org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean " >
        
< property name = " dataSource "  ref = " dataSource " />
        
< property name = " hibernateProperties " >
            
< props >
                 
< prop key = " hibernate.dialect " > org.hibernate.dialect.SQLServerDialect </ prop >
                 
< prop key = " hibernate.hbm2ddl.auto " > none </ prop >
            
</ props >
        
</ property >
        
< property name = " annotatedClasses " >
            
< list >
                
< value > com.game.products.model.Products </ value >
            
</ list >
        
</ property >
            
    
</ bean >

至此,我们就可以使用hibernate的annotation了,是不是很简单呢。

示例代码

效果:

注:本帖转自 http://www.blogjava.net/rickhunter/articles/115270.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值