Hibernate常见注解说明

 1 @Entity表示将一个类声明为一个实体的bean(即一个持久化的POJO类) 
 2 
 3 2.@Table表示声明该实体bean映射指定的表(table),目录(catalog)和schema的名字
 4 
 5 @Id表示声明了该实体bean的标识属性,即主键
 6 
 7 @Column表示声明了属性到列的映射。该注解有如下属性:
 8      4.1:name              可选 列名(默认值为属性名)
 9      4.2:unique             可选 是否在该列上设置唯一约束(默认为false)
10      4.3:nullable           可选 是否为空(默认为false)
11      4.4:insertable         可选 是否作为生成insert语句中的一个列(默认为true)
12      4.5:updateable         可选 是否作为生成update语句中的一个列(默认为true)
13    4.6:columnDefinition  可选 为这个特定的列覆盖sql ddl片段(可能影响移植)
14    4.7:table                可选 定义对应的表(默认为主表)
15    4.8:length            可选 列长度(默认值为255)
16    4.9:precision            可选 列十进制进度,默认为0
17    4.10:scale            可选 如果十进制数值范围可用,在此设置
18 
19 @GeneratedValue表示主键的生成策略。该注解有如下属性:
20      5.1:strategy          指定生成的策略(JPA定义的),默认是GenerationType.AUTO 
21   GenerationType.AUTO主键有程序控制
22   GenerationType.IDENTITY主键由数据库自动生成,常用与sqlserver
23   GenerationType.SEQUENCE根据序列生成主键,这个值要与generator一同使用
24   generator指定主键的生成器(可能是oracle中序列)
25   GenerationType.TABLE使用一个特定的数据库表格来保存主键
26   
27      5.2:@GenericGenerator 表示声明了一个hibernate的主键的生成策略。支持13种生
28   成策略。该注解有如下属性:name(指定生成器的名称),strategy(指定生成策    略),parameters(得到strategy指定的具体生成器所用到的参数)
29   其中13中策略(strategy属性值)如下:
30   native 指将主键的生成工作由数据库完成,很常用.
31   Uuid 采用128位uuid算法生成的主键,占用空间较大
32   Hilo要在数据库中建立一张额外的表,默认表名为hibernate_unque_key,默认      字段为integer类型,名称是next_hi(比较少用) 
33   assigned 在插入数据的时候主键由程序处理(很常用),这是<generator>元素      没有指定时的默认生成策略。等同于JPA中的AUTO。 
34   Identity 自动增长,等同于JPA中identity
35   select 使用触发器生成主键(主要用于早期的数据库主键生成机制,少用) 
36   sequence 调用谨慎数据库的序列来生成主键,要设定序列名,不然hibernate      无法找到。 
37   seqhilo 通过hilo算法实现,但是主键历史保存在Sequence中,适用于支持      Sequence的数据库,如Orcale(比较少用) 
38   increnment 插入数据的时候hibernate会给主键添加一个自增的主键,但是一个     hibernate实例就维护一个计数器,所以在多个实例运行的时候不能使用这个方法
39   foreign 使用另一个相关的对象的主键。通常和<one-to-one>联合起来使用
40   guid 采用数据库底层的guid算法机制,对应MySQL的uuid()函数,SQL Server       的newid()函数,ORCALE的rawtohex(sys_guid())函数等 
41   sequence-identity sequence策略的扩展,采用立即检索策略来获取sequence       值,需要JDBC3.0和JDK4以上(含1.4)版本 
42   uuid.hex 看uudi,建议用uuid替换 
43 
44 看了这么多的主键生成策略,我自己也快晕了,其实常用的就是oracle主键与sqlserver的主键生成策略,它们分别表示如下:
45 Oracle主键生成:
46   @Id
47     @GeneratedValue(generator = "depgen")   
48     @GenericGenerator(name = "depgen", strategy = "assigned")
49     private int deptno;//deptno为oracle数据库中某部门表的主键
50 
51 Sqlserver主键生成:
52   @Id
53   @GeneratedValue(strategy=GenerationType.IDENTITY)
54   private Integer uid;//uid为sqlserver数据库中某用户表的用户id,表示主键
55   
56 6.@OneToMany用于设置一对多的关联,用于配置<set>端。cascade属性有5个值(只有CascadeType.All好用?),  分别是CascadeType.PERSIST(级联新建)、CascadeType.REMOVE(级联删除)、CascadeType.REFRESH(级联刷新)、CascadeType.MERGE(级联更新)、CascadeType.All(全部)
57 
58 targetEntity属性表示目标指向那个类
59 
60 mappedBy属性表示映射 即:
61 @OneToMany(targetEntity=EmpInfo.class,cascade=CascadeType.ALL,mappedBy="dept")
62 private Set empinfos = new HashSet(0);
63 
64 Fetch指定是否延迟加载,值为FetchType.LAZY表示延迟,为FetchType.EACER表示立即加载。
65 
66 @ManyToOne用于多对一的关联,用于配置如:private DeptInfo dept;端。
67   如:
68   @ManyToOne(targetEntity=DeptInfo.class)
69       @JoinColumn(name="deptno")//这里的deptno为此表对应的外键名
70       private DeptInfo dept;
71 
72 @Cache用于配置配置缓存
73 
74 以上是小编的一点小小的终结,希望对大家有所帮助!
75 最后祝大家愉快!

 

posted @ 2013-03-23 10:58  全力以赴001  阅读(260)  评论(0编辑  收藏  举报