前面的例子(参考hibernate4 mysql xml)中记录了利用传统的hibernate XML 隐射方式配置, 但这种处理方式在近几年已经不流行了,因为要维护太多的XML 配置文件,而且修改之后还得重启应用服务器。近年流行的是用注解方式写程序, 直观,对程序员来说更容易维护,代码更少。所以在前一个例子的基础上,改写成hibernate 注解方式.
1. 拷贝前面的例子,重新命名为一个新的工程
删掉 Stock.xml hibernate映射配置文件, 修改 Stock.java 为如下:package com.yihaomen.hibernate.domain;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
/**
* Model class for Stock
*/
@Entity
@Table(name="stock")
public class Stock implements java.io.Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="STOCK_ID")
private Integer stockId;
@Column(name="STOCK_CODE", length=10)
private String stockCode;
@Column(name="STOCK_NAME", length=20)
private String stockName;
public Stock() {
}
public Stock(String stockCode, String stockName) {
this.stockCode = stockCode;
this.stockName = stockName;
}
public Integer getStockId() {
return this.stockId;
}
public void setStockId(Integer stockId) {
this.stockId = stockId;
}
public String getStockCode() {
return this.stockCode;
}
public void setStockCode(String stockCode) {
this.stockCode = stockCode;
}
public String getStockName() {
return this.stockName;
}
public void setStockName(String stockName) {
this.stockName = stockName;
}
}
这里注意 怎么定义映射那个表,那个字段的。当然还有自动增量的定义,Id,以及生成策略, 先简单介绍一下有如下几种生成策略:
AUTO - 可以是identity column类型,或者sequence类型或者table类型,取决于不同的底层数据库.
TABLE - 使用表保存id值(也就是会为应用的表创建一张专门保存Id的表)
IDENTITY - identity column
SEQUENCE – sequence
这里采用了 AUTO 方式,可以在多个数据库之间切换,自动识别,如果是oracle 应该用 sequence 方式了,具体才用那种方式,根据自己数据库需要,以及程序要求.
2. 更新注解下的hibernate 配置文件
quot;-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
false
com.mysql.jdbc.Driver
password
jdbc:mysql://localhost:3306/yihaomen-hibernate
root
org.hibernate.dialect.MySQLDialect
true
这里的重点是将
替换成
3. 其他配置部分以及程序代码保持原样
运行测试程序,可以但到结果,数据被成功插入到数据库中了,源代码在下面下载:
hibernate4 mysql annotation download