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
千山鸟飞绝 阅读(10644)
评论(13) 编辑 收藏 所属分类:
Web开发