常识-Hibernate与JPA常用注解
来源:互联网 发布:淘宝手机客服端下拉词 编辑:程序博客网 时间:2024/06/10 14:00
收集一下常用的注解说明
@Entity
@Entity(name=”tableName”): 映射实体类,name可选,对应数据库中的一个表,若表名与实体类名相同,则name可省略。 注意,使用@Entity时必须指定实体类的主键属性。
@Table
@Table(name=””,catalog=””, schema=””): 与@Entity配合使用,只能标注在实体的class定义处,表示实体对应的数据库表的信息。Name可选,映射表的名称,若表名与实体类名相同,则name可省略。catalog可选,表示catalog名称,默认为Catalog(“”)。Schema可选,表示schema名称,默认为schma(“”)。
@Embeddable
@Embeddable 表示一个非Entity类可以嵌入到另一个Entity类中作为属性而存在。
@id
定义映射到数据库表的主键的属性,一个实体类可以有一个或者多个属性被映射为主键,可置于主键属性或者getXxxx()前。 注意:如果有多个属性定义为主键属性,该实体类必须实现serializable接口。
@GeneratedValue
@GeneratedValue(strategy=GenerationType,generator=””):可选,用于定义主键生成策略。 Strategy表示主键生成策略,取值有: 1.GenerationType.AUTO:根据底层数据库自动选择(默认) 2.GenerationType.INDENTITY:根据数据库的Identity字段生成 3.GenerationType.SEQUENCE:使用Sequence来决定主键的取值 4.GenerationType.TABLE:使用指定表来决定主键取值,结合@TableGenerator使用
@Column
可将属性映射到列,使用该注解来覆盖默认值,@Column 描述了数据库表中该字段的详细定义,这对于根据JPA注解生成数据库表结构的工具非常有作用。 常用属性: name: 表示数据库表中该字段的名称,默认情形属性名称一致。 Nullable: 表示该字段是否允许为null,默认为true。 Unique: 表示该字段是否是唯一标识,默认为false。 Length: 表示该字段的大小,仅对String类型的字段有效,默认值255。 Inserable: 表示在ORM框架执行插入操作时, 该字段是否应出现INSERT语句中,默认为true。 Updateable: 表示在ORM框架执行更新操作时, 该字段是否应该出现在UPDATE语句中, 默认为true。对于一经创建就不可以更改的字段, 改属性非常有用,如对于birthday字段。
@Embedded
@Embedded 是注释属性的,表示该属性的类时嵌入类。 注意:同时嵌入类也必须标注@Embeddable注解。
@EmbeddedId
@EmbeddedId 使用嵌入式主键类实现复合主键。嵌入式主键类必须实现Serializable接口,必须有默认的public无参的构造方法、必须覆盖equals和hashCode方法。
@Transient
表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性,如果一个属性并非数据库表的字段映射,就务必将其标识为@Transient,否则ORM框架默认其注解为@Basic。
@OneToOne
一对一单向外键: @OneToOne(cascade=CascadeType.ALL) @JoinColumn(name="",unique=true) 注:保存时应该先保存外键对象,再保存主表对象。一对一双向外键: 主控方的配置同一对一单向外键关联 被控方在主控方的引用上加上注解:@OneToOne(mappedBy=”card”) 双向关联,必须设置mappedBy属性。 不可能在双方都设置外键保存关联关系,否则双方都无法保存。
@ManyToOne
@ManyToOne (多对一)单向: 不产生中间表,但可以用@Joincolumn(name="") 来指定生成外键的名字,外键在多的一方表中产生! hibernate中@ManyToOne默认是立即加载
@OneToMany
@OneToMany (一对多)单向:会产生中间表,此时可以用 @Joincolumn(name="") 避免产生中间表,并且指定了外键的名字 别看@joincolumn在一中写着 但它存在在多的那个表中 hibernate中@OneToMany默认是懒加载
@ManyToMany
@ManyToMany 表示此类是多对多关系的一边, mappedBy 属性定义了此类为双向关系的维护端 注意:mappedBy 属性的值为此关系的另一端的属性名。@JoinTable 描述了多对多关系的数据表关系。 name 属性指定中间表名称, joinColumns 定义中间表与关联表的外键关系 inverseJoinColumns 属性定义了中间表与另外一端的外键关系。
Hibernate所鼓励的7大措施 :
尽量使用many-to-one,避免使用单向one-to-many;
Hibernate鼓励使用双向一对多关联,不使用单向一对多关联。单向一对多关联映射是在one端维护关系的,必须先保存many端后才可以保存one端,所以在保存many端时该端不知道one端是否有响应的数据,所以只能将维护的字段设为null,如果非空则无法保存。因为one端维护关系,所以在保存one时,会发出多余的update语句维护many端的外键关系。灵活使用单向one-to-many;
不用一对一,使用多对一代替一对一;
配置对象缓存,不使用集合缓存;
一对多使用Bag,多对一使用set;
继承使用显示多态HQL:fromobject polymorphism=”exlicit”避免查处所有对象;
消除大表,使用二级缓存;
阅读全文
0 0
- 常识-Hibernate与JPA常用注解
- JPA与hibernate注解
- Hibernate注解与JPA
- Hibernate注解与JPA
- Hibernate常用 JPA 注解配置参考
- Java、Hibernate(JPA)常用注解整理
- JPA常用注解以及Hibernate验证
- JPA & Hibernate 注解
- JPA hibernate 注解
- JPA & Hibernate 注解
- JPA & Hibernate 注解
- JPA & Hibernate 注解
- JPA和Hibernate注解
- JPA & Hibernate 注解
- JPA & Hibernate 注解
- JPA & Hibernate 注解
- Hibernate,JPA注解
- JPA Hibernate 注解
- 浅淡圣杯布局与双飞翼布局
- Oracle基础操作
- 利用jxl读取xls文件
- uTorrent设置,防止出现磁盘负荷100%
- bootstrap-table当查询后再去点击分页时,后台返回的数据是正确的,前台也显示正确了,但是当我点击分页时,列表会刷新为最初的数据,而不再是本次查询得到的数据
- 常识-Hibernate与JPA常用注解
- c++中boost协程5种使用实例
- 感悟:学编程语言就像学方言
- 在Centos7下捣鼓邮件发送软件sendmail与postfix
- 对于AOP的简单理解:AOP的含义及作用
- Apache默认虚拟主机
- 117. Populating Next Right Pointers in Each Node II
- [使用教程]xftp5中文版怎么使用?
- python 错误处理 assert