hibernate注解开发

JPA和Hibernate的关系

jpa是标准接口,hibernate是jpa的一种实现,但其功能是JPA的超集。

一般在开发中,优先考虑使用JPA注解开发,这样有利于程序的移植和扩展

hibernate如何实现与JPA的关系呢?

通过Hibernate-annotation、Hibernate-entityManager、Hibernate-core三个组件来实现

Hibernate注解分类

1、类级别注解

2、属性级别注解

3、映射关系注解

类级别注解分为

@Entity:一个实体类对应数据库中的一张表,name属性指定表的名称

@Table:一般与@Entity配合使用,表示实体类对应对应数据库表的信息,三个属性分别是:name、catalog、schema属性

name:映射表的名称,只有再表名和类名不一致时使用,

catalog:表示目录的意思,默认值为空。

schema:表示模式的意思,默认值为空。

catalog和schema的区别:

一个数据库包含多个catalog(目录),一个catalog(目录)又包含多个schema(模式),一个schema又包含表、视图、字段。

oracle和mysql都不支持catalog,oracle支持schema ,指的是userID。mysql也支持schema,指的是,数据库名称。

@Embeddable:表示是一个嵌入类,指一个非Entity实体类,可以嵌入到另一个Entity类中作为一个属性存在。它不会生成表!

属性级别注解:

@ID注解:必须存在,定义映射数据库表的主键属性,一个实体类可以可以有一个或者多个属性被映射成主键,该注解可以写在主键属性上,也可以写在get方法上。

注意:如果如果有多个属性被映射成主键,那么必须实现Serializable接口

 

@GeneratedValue:指定主键的生成策略,包含strategy(主键生成策略)和generator属性

strategy主键生成策略包含四种:

1、GenerationType.AUTO:自增长策略,默认的,要求字段必须是整型,mysql默认的主键生成策略也是自增长。

2、GenerationType.IDENTITY:要求字段必须唯一

3、GenerationType.SEQUENCE:序列,在oracle中通过序列来指定主键,oracle中没有自增长策略

4、GenerationType.TABLE:通过表名来指定主键,必须结合@TableGenerator注解来使用

手动设置主键方式:采用主键生成器

@Id
@GeneratedValue(generator = "uid")
@GenericGenerator(name = "uid",strategy = "assigned")
@Column(length = 50)
private String id;

@Column注解:将属性映射到列,使用该注解覆盖默认值
hibernate注解开发
@Transient注解:表示实体类中该属性不必映射成字段,
 

 

上一篇:如何在 Flink 1.9 中使用 Hive?


下一篇:Greenplum 常用数据字典