首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Annotation注脚介绍

2012-08-24 
Annotation注解介绍Table Table用来定义entity主表的name,catalog,schema等属性。 元数据属性说明: name:

Annotation注解介绍
Table

Table用来定义entity主表的name,catalog,schema等属性。

元数据属性说明:

name: 表名 catalog: 对应关系数据库中的catalog schema:对应关系数据库中的schema UniqueConstraints:定义一个UniqueConstraint数组,指定需要建唯一约束的列 JoinTable

JoinTable在many-to-many关系的所有者一边定义。如果没有定义JoinTable,使用JoinTable的默认值。

元数据属性说明:

table:这个join table的Table定义。 joinColumns:定义指向所有者主表的外键列,数据类型是JoinColumn数组。 inverseJoinColumns:定义指向非所有者主表的外键列,数据类型是JoinColumn数组。

下面的代码定义了一个连接表CUST和PHONE的join table。join table的表名是CUST_PHONE,包含两个外键,一个外键是CUST_ID,指向表CUST的主键ID,另一个外键是PHONE_ID,指向表PHONE的主键ID。

                  @JoinTable(    table=@Table(name=CUST_PHONE),    joinColumns=@JoinColumn(name="CUST_ID", referencedColumnName="ID"),    inverseJoinColumns=@JoinColumn(name="PHONE_ID", referencedColumnName="ID")    )        
TableGenerator

TableGenerator定义一个主键值生成器,在Id这个元数据的generate=TABLE时,generator属性中可以使用生成器的名字。生成器可以在类、方法或者属性上定义。

生成器是为多个实体类提供连续的ID值的表,每一行为一个类提供ID值,ID值通常是整数。

元数据属性说明:

name:生成器的唯一名字,可以被Id元数据使用。 table:生成器用来存储id值的Table定义。 pkColumnName:生成器表的主键名称。 valueColumnName:生成器表的ID值的列名称。 pkColumnValue:生成器表中的一行数据的主键值。 initialValue:id值的初始值。 allocationSize:id值的增量。

下面的代码定义了两个生成器empGen和addressGen,生成器的表是ID_GEN。

                  @Entity public class Employee {    ...    @TableGenerator(name="empGen",    table=@Table(name="ID_GEN"),    pkColumnName="GEN_KEY",    valueColumnName="GEN_VALUE",    pkColumnValue="EMP_ID",    allocationSize=1)    @Id(generate=TABLE, generator="empGen")    public int id;    ...    }        @Entity public class Address {    ...    @TableGenerator(name="addressGen",    table=@Table(name="ID_GEN"),    pkColumnValue="ADDR_ID")    @Id(generate=TABLE, generator="addressGen")    public int id;    ...    }        
SequenceGenerator

SequenceGenerator定义一个主键值生成器,在Id这个元数据的generator属性中可以使用生成器的名字。生成器可以在类、方法或者属性上定义。生成器是数据库支持的sequence对象。

元数据属性说明:

name:生成器的唯一名字,可以被Id元数据使用。 sequenceName:数据库中,sequence对象的名称。如果不指定,会使用提供商指定的默认名称。 initialValue:id值的初始值。 allocationSize:id值的增量。

下面的代码定义了一个使用提供商默认名称的sequence生成器。

                    @SequenceGenerator(name="EMP_SEQ", allocationSize=25)        
DiscriminatorColumn

DiscriminatorColumn定义在使用SINGLE_TABLE或JOINED继承策略的表中区别不继承层次的列。

元数据属性说明:

name:column的名字。默认值为TYPE。 columnDefinition:生成DDL的sql片断。 length:String类型的column的长度,其他类型使用默认值10。

下面的代码定义了一个列名为DISC,长度为20的String类型的区别列。

                  @Entity    @Table(name="CUST")    @Inheritance(strategy=SINGLE_TABLE,        discriminatorType=STRING,       discriminatorValue="CUSTOMER")    @DiscriminatorColumn(name="DISC", length=20)    public class Customer { ... }

热点排行