JPA笔记

1.序列化的作用:序列化即串行化(Serialization),JAVA内置持久化的机制,当实现了java.io.Serializable接口可将类对象用java.io.ObjectOutputStream以二进制保存到硬盘,也能用java.io.ObjectInputStream将对象从硬盘读取.

 

2.POJO(Plain Old Java Object): 简单JAVA对象,实际上是普通的JavaBean对象,由一些属性和获得这些属性的Getter和Setter方法组成。

 

3.持久化一个POJO成为Entity类需要注意:
 1)使用@Entity注释,标明实体名,@Table指定一张表,@Column指定一个字段,@Id指定实体主键。
 2)实体类中必须有一个默认的无参构造方法,并必须南声明为public或protected。
 3)将实体类实现Serializable接口,以支持远程调用。

 

4.复合主键类的使用需注意:
 1)必须实现Serializable接口
 2)必须有默认的public无参构造方法
 3)必须覆盖(重写)equals和hashcode方法,equals方法用于判断两对象是否相同,可通过设定为主键的对象的属性值进行判断,hashcode方法返回当前对象的哈希码,生成的hashcode相同的概率越小越好。

 

5.主键的生成策略:(TABLE,SEQUENCE,IDENTITY,AUTO)
 1)SEQUENCE和IDENTITY要在确定的数据库类型中才可使用,SEQUENCE用于ORACLE而不能用于MYSQL数据库,IDENTITY可用于MSSQL
 2)AUTO自动生成主键,由JPA实现者确定,用户没法控制,适用于比较简单主键。
 3)TABLE将主键的值持久化在数据库表中,能够用于多种关系类型数据库。

 

6.实体关系:
 1)单向关联:一个实体引用另一个实体,即通过一个实体可获得另一个实体。如:A--->B,表示A关联到实体B,实体B不关联实体A,实体B作为一个属性在A中存在,通过A可获得B,但不能通过B获得A。
 2)双向关联:两个实体可互相获得对方的引用。如:A----B,实体A作为实体B的属性存在,B也作为A的属性存在,双向关联时要指定关系的维护方和被维护方(一般被维护方有mappedBy标识)。如一对一双向关联中指定:@One to One(mappedBy="XXX").

 

7.一对多关系的表结构的两种设计策略:
 1)外键关联:关系定义在其中一张表中,即在一张表中指定外键。
 2)表关联:表关系定义在第三张表中,即通过中间表来关联。
 外键关联在一方用@JoinColumn指定,表关联@JoinTable指定。

 

8.在双向关联中,在保存实体关系的实体中使用@JoinColumn,在没有保存实体关系的实体中,即关系的被维护方用mappedBy指定所关联的实体。

 

9.JPA常用的集合类:
 1)Collection,是set和list的父类,在不确定set还是list时,使用可初始化为ArrayList或HashSet。
 2)Set集合中的对象不允许重复并且是无序的,可初始化为HashSet.
 3)List集合中的对象允许重复,并且有序排列,DESC为降序,ASC为升序。
 4)Map集合是键(KEY)值(VALUE)对的集合。与Collection是并行关系。

 

10.flush()方法:提交实体状态并保存到数据库中,实现与数据库同步。
refresh()方法:将数据库中数据重新读取到持久化上下文的实体中,并实现与数据库同步。
clear()方法:将持久化上下文中实体全部变成游离态,此时没有与数据库同步的实体,将不会被持久化到数据库中。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值