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了,是不是很簡單呢。
示例代碼
效果:
相關信息:
Struts2.0+spring2.0+hibernate3.1 ACEGI應用示例
struts2.0+spring2.0+hibernate3.1 web應用 示例代碼下載
項目架構以及數據庫信息
struts+spring+hibernate的web應用<一> 架構搭建
更多信息
posted on 2007-05-04 09:19
千山鳥飛絕 閱讀(10671)
評論(13) 編輯 收藏 所屬分類:
Web開發