JPA 常用注解

1@Entity
作用:设置一个类为实体

@Entity //标识这个pojo是一个jpa实体   

public class JailZbzqQuestionModel extendsBaseModel{ }

2@Table
作用:设置实体类对应的表,常与@Entity一起使用
参数:
name制定表名,不写的话,为实体类的类名

@Entity

@Table(name= "ZBZQ_JAIL_QUESTION")

public class JailZbzqQuestionModel extendsBaseModel{ }

3@Id
作用:设置对象标识符

@Id

@Column(name="ID",nullable=false, updatable=false, length=32)

protected String id;

4@GeneratedValue
作用:设置标识符的生成策略,常与@Id一起使用
参数:
strategy指定具体的生成策略

方式一:@GeneratedValue(strategy=GenerationType.AUTO)也是默认策略,即写成@GeneratedValue也可。
类似于
hibernatenative策略,生成方式取决于底层的数据库

方式二:@GeneratedValue(strategy =GenerationType.IDENTITY)指定“自动增长”策略,适用于MySQL

方式三:@GeneratedValue(strategy =GenerationType.SEQUENCE, generator = "seq_tbl_user")指定“序列”策略,使用于Oracle

方式四:TABLE:使用一个特定的数据库表格来保存主

TABLE比较复杂,这里不讲解
@Id

@GeneratedValue(strategy=GenerationType.AUTO)

@Column(name="ID",nullable=false, updatable=false, length=32)

protected String id;

5@Column
作用:设置列

参数:
name:指定列名
unique:指定唯一约束
nullable:指定是否允许为

inserttable:是否可以插入  
updateable:是否可以更新

columnDefinition:定义建表时创建此列的DDL
length:长度

@Column(name= "QUESTION_UNIT", length = 50, nullable = true)

private String questionUnit;


@Column(name = "DESC",columnDefinition="TEXT", nullable =true)

private String desc;

6@Temporal
作用:设置日期时间

方式一:@Temporal(TemporalType.DATE)映射为日期//       birthday date(只有日期)
方式二:
@Temporal(TemporalType.TIME)映射为日期// birthday time(是有时间)
方式三:
@Temporal(TemporalType.TIMESTAMP)映射为日期//birthdaydatetime(日期+时间)

@Temporal(TemporalType.TIMESTAMP)

@Column(name= "REG_DATE", nullable =true)

private Date regDate;

7@Lob
作用:设置大数据类型

@Lob

@Column(name= “TEXT",nullable = true)

privateString text;   //text  longtext类型

8@Transient
作用:修饰的字段不会被持久化

@Transient

private Date startDate;
9 @OneToMany(fetch=FetchType,cascade=CascadeType

@ OneToMany 描述一个一对多的关联 , 该属性应该为集体类型 , 在数据库中并没有实际字段
fetch: 表示抓取策略 , 默认为 FetchType.LAZY , 因为关联的多个对象通常不必从数据库预先读取到内存 
cascade:

例:订单和订单项就是一对多的关系

@Entity
@Table(name = "
tb_order")
@
SuppressWarnings("serial")
public class
Order  implementsjava.io.Serializable{

……….

//mappedBy="order":指明Order类为双向关系维护端,负责外键的更新
@OneToMany(cascade =CascadeType.ALL, fetch =FetchType.LAZY,mappedBy = "order")
private Set<
OrderItem> items = newHashSet<OrderItem>();

……………

}

@Entity
@Table(name = "
tb_orderitem")
@
SuppressWarnings("serial")
public class
OrderItem implementsjava.io.Serializable{

…………………….

//optional=true:可选,表示此对象可以没有,可以为nullfalse表示必须存在
@ManyToOne(cascade = {CascadeType.REFRESH,CascadeType.MERGE }, optional = true)
@
JoinColumn(name = "order_id")
private Order
order;

………….

}

表示级联操作策略 , 对于 OneToMany 类型的关联非常重要 , 通常该实体更新或删除时 , 其关联的实体也应当被更新或删除

10@ManyToOne(fetch=FetchType,cascade=CascadeType
@ManyToOne表示一个多对一的映射,该注解标注的属性通常是数据库表的外键 
optional:是否允许该字段为null,该属性应该根据数据库表的外键约束来确定,默认为true 
fetch:
表示抓取策略,默认为FetchType.EAGER 
cascade:
表示默认的级联操作策略,可以指定为ALL,PERSIST,MERGE,REFRESHREMOVE中的若干组合,默认为无级联操作 
targetEntity:表示该属性关联的实体类型.该属性通常不必指定,ORM框架根据属性类型自动判断targetEntity.

1111@OneToOne(fetch=FetchType,cascade=CascadeType
@OneToOne描述一个一对一的关联 
fetch:表示抓取策略,默认为FetchType.LAZY 
cascade:
表示级联操作策略 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值