一、类级别注解
@Entity 该注解将一个类声明为一个实体Bean,必须有
name:可选,对应数据库中的一个表,若表名与实体类名相同可以省略
schema:可选,对应数据库的库名,可省略
@Table 只能标注在实体class定义处,用来指定实体类和数据库表的对应关系,通常和@Entity配合使用,可省略
name:可选,指定表的名称;默认实体名称和表名一致,不一致是使用该属性指定表名
catalog:可选,指定Catalog名称(一般写数据库名称)
schema:可选,作用和catalog类似
例:
@Entity
@Table(name = "IDC_ALARM_BORD", schema = "CATH_THINKOPS")
public class AlarmBord {
}
二、属性级别注解
@Id 定义映射到数据库表的主键属性,一个实体类只能有一个属性被定义为主键,必须有
@GeneratedValue 定义主键生成策略,可省略
strategy:定义主键生成策略,取值有:
GenerationType.AUTO(默认,根据底层数据库自动选择)
GenerationType.INDENTITY(根据数据库的Identity字段生成,支持DB2、MySQL等)
GenerationType.SEQUENCE(使用Sequence来决定主键的取值,适合Oracle、DB2等)
GenerationType.TABLE(使用指定表来决定主键取值,结合@TableGenerator使用)
generator:定义主键生成器的名称,如:hibernate可以指定 uuid 等主键生成方式
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;123
@GenericGenerator 是 Hibernate 所提供的自定义主键生成策略生成器,对 JPA 策略的一种拓展补充
它要配合 @GeneratedValue 一起使用,并且 @GeneratedValue 注解中的 generator 属性要与 @GenericGenerator 注解中 name 属性一致,strategy 属性表示 hibernate 的主键生成策略
name:该值要和 @GeneratedValue 注解中 generator 属性值一致
strategy:主键生成策略,取值有:uuid、hilo、assigned、identity、select、sequence、seqhilo、increment、foreign、guid、uuid.hex、sequence-identity 和 native
@Id
@GeneratedValue(generator = "paymentableGenerator")
@GenericGenerator(name = "paymentableGenerator", strategy = "increment")
private Long id;1234
@Column 将属性映射到列,描述数据库表中该字段的详细信息
name:可选,表示数据库表中该字段的名称,默认情形属性名称一致
nullable:可选,表示该字段是否允许为null,默认为true
unique:可选,表示该字段是否是唯一标识,默认为false
length:可选,表示该字段的大小,仅对String类型的字段有效,默认值255
insertable:可选,表示在ORM框架执行插入操作时,该字段是否应出现INSETRT语句中,默认为true
updateable:可选,表示在ORM 框架执行更新操作时,该字段是否应该出现在UPDATE 语句中,默认为true
columnDefinition:可选,表示该字段在数据库中的实际类型(VARCHAR、DATE、TEXT、BLOB)
@Column(name = "ALARM_ID")
private String alarmId;12
@Transient 表示该属性并非一个到数据库表的字段的映射
@Transient // 定义该属性不映射到数据库表中(数据库表中没有这个字段)
private String hostName;12
@Temporal 用于定义映射到数据库的时间精度,只对 Date 类型数据有效
TemporalType:时间精度,取值有:DATE(日期)、TIME(时间)、TIMESTAMP(两者兼具)
@Temporal(TemporalType = DATE)
@Column
private Date createTime;123
@JoinColumn 定义该字段是关联字段
name:该字段的名称,由于@JoinColumn描述的是一个关联字段,如ManyToOne, 则默认的名称由其关联的实体决定
@OneToOne(cascade = CascadeType.ALL, optional=true)
@JoinColumn(name = "hostId") // 指向另一张表的属性
private Long hostId;123
@OneToOne、@OneToMany、@ManyToOne、@ManyToMany 关联映射
cascade:设置级联方式,取值有:
CascadeType.ALL(全部)
CascadeType.PERSIST(保存)
CascadeType.REMOVE(删除)
CascadeType.MERGE(修改)
CascadeType.REFRESH(刷新)
fetch:配置加载方式,取值有:Fetch.EAGER(及时加载,多对一默认是Fetch.EAGER)、Fetch.LAZY(延迟加载)
targetEntity:配置集合属性类型
@ManyToOne(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, optional = true)1
@Formula 作用是用一个查询语句动态的生成一个类的属性
@Formula("(select COUNT(*) from user)") // 把SQL查询的结果赋值给该字段
private int count;12
三、Hibernate中Jackson相关注解
需要引入 Jackson 相关的包
<!-- Jackson -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.5</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.5</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.5</version>
</dependency>123456789101112131415161718
@JsonFormat 属性级别注解,可以方便的把Date类型直接转化为我们想要的模式
pattern:指定时间格式
timezone:指定时区
@Column
@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss", timezone = "GMT+08:00") // 指定时间的格式
private Date createTime;123
@JsonIgnoreProperties 类级别注解,作用是json序列化时将Java bean中的一些属性忽略掉,序列化和反序列化都受影响
@Entity
@JsonIgnoreProperties // 序列化时将Java bean中的一些属性忽略掉
public class Jenkins implements Serializable {
}
原文:https://blog.csdn.net/qq_35959573/article/details/80075959