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这个类中定义就可以了。代码如下:
注意类中的@符号没有,这就是annotation发挥作用的地方了,是不是很方便呢。
现在可以将com.game.bean.hibernate整个文件夹都去掉了,因为我们在spring的applicationContext中进行定义了。
修改applicationContext中的SessionFactory ,示例如下:
至此,我们就可以使用hibernate的annotation了,是不是很简单呢。
示例代码
效果:
注:本帖转自 http://www.blogjava.net/rickhunter/articles/115270.html
在已经发布的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;
}
}
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 >
< 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
本文介绍Hibernate 3.2中新增的注解(Annotation)功能,该功能简化了对象关系映射的配置过程。通过示例展示了如何使用注解定义实体类,并在Spring配置文件中设置SessionFactory以启用此功能。
1561

被折叠的 条评论
为什么被折叠?



