码迷,mamicode.com
首页 > Web开发 > 详细

【Hibernate注解】

时间:2015-08-01 11:13:33      阅读:280      评论:0      收藏:0      [点我收藏+]

标签:

Hibernate注解不仅可以替换复杂的映射文件,甚至可以逆向生成数据库表

1、需要导入的jar包类列表

  hibernate-annotations.jar

  hibernate-commons-annotations.jar

  ejb3-persistence.jar

2、配置实体类的常用注解

  @Entity  将一个类声明为实体Bean(即一个持久化POJO类)

  @Id  声明该实体Bean的标识属性(相当于数据表的主键)

  @GeneratedValue  定义标识符的生成策略

  @Table  为实体Bean映射指定表(table)、目录(也就是数据库名)(catalog)和schema的名称。默认值:实体Bean的类名,不带包名

  @UniqueConstraint  定义表的唯一约束

  @Lob  表示属性将被持久化为Blob或者Clob类型

  @Column  将属性映射到列

  @Transient  将忽略这些字段和属性,不用持久化到数据库

3、配置对象关联关系

  @OneToOne

  @OneToMany

  @ManyToOne

  @ManyToMany

举例说明:比如年级表和学生表的一对多关系

在学生表中

  @ManyToOne(fench=FetchType.LAZY)//延迟加载

  @JoinColumn(name="GID")//声明外键,GID是数据库学生表中的某一列,表示外键关联到年级表

 

在年级表中

 //指定学生的关联属性,延迟加载,级联删除和级联增加
 @OneToMany(mappedBy="grade",fetch="FetchType.LAZY",cascade={CasCadeType.REMOVE,CasCadeType.PERSIST})

 

 总结:

  在“一”的一方,@ManyToOne中通过mappedBy属性指定“多”方的关联属性。在双向关联关系中,有且仅有一端作为主体端存在,主体端负责维护更新,对于不需要维护这种关系的从表则通过mappedBy属性声明,指定另一主体的关联属性,相当于inverse="true",即将控制权反转,自己甩手休息不维护关联关系

  在“多”方,通过@JoinColumn指定“多”方定义的外键字段

  fetch属性指定关联关系获取方式,即是否采用延迟加载

  cascade属性指定级联操作

    CasCadeType.REMOVE  级联删除

    CasCadeType.PERSIST  级联增加

    CasCadeType.MERGE  级联更新

    CasCadeType.REFRESH  级联刷新

    CasCadeType.ALL  包含所有级联操作

 

【Hibernate注解】

标签:

原文地址:http://www.cnblogs.com/6da6da/p/4693722.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!