Hibernate常用注解

来源:互联网 发布:qq怎么设置mac在线 编辑:程序博客网 时间:2024/09/21 08:19

简单介绍一下关于Hibernate中那些常用的注解

@Entity@Table(name = "student", catalog = "test")public class Student {}

实体类注解:@Entity实体类映射到数据库表
@Table(),name表示表名,catalog表示数据库名称

@Id@GeneratedValuepublic Integer getId() {return id;}
Id标示:@Id
列自增:@GeneratedValue这个id的主键生成策略有很多种,这里就不详细介绍了
这两个注解都是一般成对使用

@Column(name = "stu_name", length = 20)public String getStuName() {return stuName;}
数据库表字段列映射到实体类属性@Column
name:可选,列名(默认值是属性名)
length:可选,列长度(默认值255)
unique:可选,是否在该列上设置唯一约束(默认值false)
nullable:可选,是否设置该列的值可以为空(默认值false)
这些是比较常用的

@Transientpublic int getAge() {return age;}

@Transient表示该属性不与数据库表中字段做映射,当我们想自定义一个变量的可以使用。

一对一映射:@OneToOne
一对多映射:@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "Class")
多对一映射:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "class_id")
这两个注解一般成对使用
多对多映射:@ManyToMany

cascade表示级联操作方式:
    CascadeType.REFRESH:级联刷新,当多个用户同时作操作一个实体,为了用户取到的数据是实时的,在用实体中的数据之前就可以调用一下refresh()方法
    CascadeType.REMOVE:级联删除
    CascadeType.MERGE:级联更新
    CascadeType.ALL:包含以上所有级联属性。

fetch表示加载方式:
    FetchType.LAZY:懒加载,加载一个实体时,定义懒加载的属性不会马上从数据库中加载
    FetchType.EAGER:急加载,加载一个实体时,定义急加载的属性会立即从数据库中加载
mappedBy可以理解为:拥有方能够自动维护跟被拥有方的关系,一般定义在主表



2 0
原创粉丝点击