hibernate连载三:Annotation注解数据库ID生成策略

Hibernate的Annotation的主键ID生成策略有13种之多,这里介绍一种通杀的跨数据库平台的主键生成方式.
要想使用hibernate的Annotation注解需要下载hibernate-annotations-3.4.0.GA.zip解压把其中的

hibernate-annotation.jar
ejb3-persistence.jar
hibernate-commons-annotation.jar丢到项目中,其写Annotation注解比写xml很是方便很多,其极力推从使用Annotation注解.
package org.huawei.hibernate;

import java.util.Date;

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
* @作者: 何枫
* @日期: 2011-4-2下午11:01:52
* @版本: V 1.0
* @标题: Teacher.java
* @包名: org.huawei.hibernate
* @描述: TODO(用一句话描述该文件做什么)
*/
@Entity
//@Entity 注解将一个类声明为实体 Bean
//@Table(name="_Teacher")======>数据库表别名
public class Teacher {
private int id;

private String name;

private String title;

private Date date;

private zhicheng zhicheng;

//一种可行性的跨数据库平台的数据库主键生成策略.(重点)
@TableGenerator(
name = "CardPkGen",
table = "Teacher_GEN",
pkColumnName = "pk_key",
pkColumnValue = "pk_value",
valueColumnName = "Teacher",
allocationSize = 1 )
@Id
@GeneratedValue(strategy=GenerationType.TABLE,generator="CardPkGen")
//@GeneratedValue(strategy=GenerationType.IDENTITY)
/*
* @GeneratedValue:定义主键生成策略,这里因为使用的是TableGenerator,所以,主键的生成策略为GenerationType.TABLE,生成主键策略的名称则为前面定义的"CardPkGen”。
* @TableGenerator各属性含义如下:
* name:表示该表主键生成策略的名称,这个名字可以自定义,它被引用在@GeneratedValue中设置的"generator"值中
* table:表示表生成策略所持久化的表名,说简单点就是一个管理其它表主键的表,本例中,这个表名为ID_GEN
* pkColumnName:表生成器中的列名,用来存放其它表的主键键名,一般来说一个主键键名对应一张其他表要获取主键值对应的key。这个值要与数据库的列对应,比如GEN_NAME对应id_gen中的主键名称
* pkColumnValue:该实体所要访问对应主键生成表的主键的key值
* valueColumnName:表生成器所要对应pkColumnName主键的下一个值,这个值也要和表生成器中的列名对应
* allocationSize:表示每次主键值增加的大小,例如设置成1,则表示每次创建新记录后自动加1,默认为50
*/

/*
* @GeneratedValue —— 注解声明了主键的生成策略。该注解有如下属性
* strategy 指定生成的策略(JPA定义的),这是一个GenerationType。默认是GenerationType. AUTO
* GenerationType.AUTO 主键由程序控制
* GenerationType.TABLE 使用一个特定的数据库表格来保存主键
* GenerationType.IDENTITY 主键由数据库自动生成(主要是自动增长类型)只用于mysql,Sqlserver
* GenerationType.SEQUENCE 根据底层数据库的序列来生成主键,条件是数据库支持序列。(这个值要与generator一起使用)
* generator 指定生成主键使用的生成器(可能是orcale中的序列)。
*/

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}
//@Basic加不加都行
//@Column=====>更改表字段名
//不需要的字段不写到数据库用@Temporal
//xml是的方式是不写
public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}


public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
//时间精度注解
//@Temporal(TemporalType.DATE)
public Date getDate() {
return date;
}

public void setDate(Date date) {
this.date = date;
}
//Annotation处理枚举leix
@Enumerated(EnumType.STRING)
//@Enumerated(EnumType.ORDINAL)
public zhicheng getZhicheng() {
return zhicheng;
}

public void setZhicheng(zhicheng zhicheng) {
this.zhicheng = zhicheng;
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值