首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

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

2012-08-22 
hibernate连载三:Annotation注解数据库ID生成策略Hibernate的Annotation的主键ID生成策略有13种之多,这里

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

hibernate-annotation.jarejb3-persistence.jarhibernate-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;}}

热点排行