JAP学习笔记(3)之映射关系和二级缓存

本文详细介绍了JPA中的映射关联关系,包括单向多对一、单向一对多、双向一对多、双向一对一和双向多对多的配置与使用。同时,阐述了如何开启和配置二级缓存,包括在persistence.xml中设置和引入相关依赖等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

映射关联关系

单向多对一

Order、Customer多对一


1)        使用@ManyToOne来映射多对一的关联关系。

2)        使用@JoinColumn来映射外键。

3)        使用@ManyToOne的fetch属性来修改默认关联属性的加载策略。

4)        保存时先保存1的一端,后保存多的一端,可避免产生多余的UPDATE语句。

5)        不能直接删除1的一端,存在外键约束。

单向一对多


1.        使用@OneToMany来映射1-n的关联关系

2.        使用@JoinColumn来映射外键列的名称。

3.        使用@OneToMany的fetch属性来修改默认加载策略。

4.        可通过@OneToMany的cascade属性来修改默认的删除策略。

casecade={CascadeType.REMOVE}

5.        删除操作时,由于由Customer方来维护关联关系,所以Customer不受外键约束,故Customer可删除,相应的Order的外键置为null。

双向一对多


1.        在进行双向1-n保存时,建议先保存1的一方,这样可以减少n条UPDATE语句。

2.        在进行双向 1-n 关联关系时, 建议使用 n 的一方来维护关联关系, 而 1 的一方不维护关联系, 这样会有效的减少 SQL 语句。

1)        可使用@OneToMany中的mapperBy属性来指定有哪个属性类维护关联关系。

2)        若在 1 的一端的 @OneToMany 中使用 mappedBy 属性, 则 @OneToMany 端就不能再使用 @JoinColumn 属性了。


使用对方中的customer属性来维护关联关系。

双向一对一


1.        双向1-1的关联关系,建议先保存不维护关联关系的一方,即没有为外键的一方,这样不会多出UPDATE语句。

2.        在双向的一对一关联中,需要在关系被维护端(inverse side)中的 @OneToOne 注释中指定mappedBy,以指定是这一关联中的被维护端

双向多对多


1.        使用@JoinTable设置中间表的属性。

2.        name:指定中间表的名称。

3.        joinColumns:设置本表与中间表的映射关系。

1)        name:中间表的列名称。

2)        referencedColumnName:本表相关列。

4.        inverseJoinColumns:设置关联表与中间表的映射关系。

开启二级缓存

1.        在persistence.xml中配置信息,开启二级缓存相关信息。


2.        导入相关Jar包


3.        导入ehcache.xml文件

4.        在实体类中声明使用二级缓存


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值