JPA
文章平均质量分 80
主要讲解ORM映射、JPA规范及实现JPA框架Hibernate 的使用。Spring JPA、Spring boot JPA等框架的使用
红鹰_Jake
如果你没产生用户价值,但公司还在给你丰厚的收入,那一定是有人在买单。
展开
-
13、JPA乐观锁和悲观锁
JPA乐观锁和悲观锁JPA乐观锁和悲观锁Entity 类型定义悲观锁案例乐观锁案例控制台打印输出JPA乐观锁和悲观锁JPA中锁有6种:乐观锁有2种,悲观锁3种,另外1种无锁模式 NONEOPTIMISTIC 和READ锁模式相同,JPA2.0 任然支持READ模式,但是推荐使用OPTIMISTICOPTIMISTIC_FORCE_INCREMENT 和WRITE模式相同,推荐使用PESSIMISTIC_READ 悲观锁,只要事务读实体,实体管理器就锁定当前实体,直到事务提交才释放锁。当多次重复读原创 2021-07-11 16:34:03 · 1188 阅读 · 0 评论 -
12、JPA查询-3种查询方式
JPA查询JPA 3中查询方式案例数据准备1、Entity类型定义2、persistence.xml配置3、初始化查询案例数据查询案例1、JPQL查询2、SQL查询3、命名查询@NamedNativeQuery @NamedQuery3.1、命名查询 JPQL和SQL定义3.2、命名查询案例JPA 3中查询方式JPQL 方式查询,表和列名称都是类和字段名称 @Entity 名称SQL 传统SQL查询@NamedNativeQuery 和@NamedQuery 命名查询,最大程度复用JPQL或S原创 2021-07-11 15:43:12 · 5898 阅读 · 0 评论 -
11、级联映射-级联持久化、更新和删除
级联映射-级联持久化、更新和删除1、什么是级联映射?2、级联映射类型3、级联关系使用案例3.1、类型定义3.2、persistence.xml配置3.3、默认配置时,保存-必须独自调用persist3.4、只保存 entityManager.persist(d1) 时报错4、级联映射使用4.1、CascadeType.PERSIST4.2、CascadeType.REMOVE 级联删除4.2.2、配置级联删除 CascadeType.REMOVE4.3、级联更新 CascadeType.MERGE1、什么原创 2021-07-08 22:28:53 · 405 阅读 · 0 评论 -
10、JPA对象关系-继承
JPA对象关系-继承JPA对象关系-继承1、表的设计-每个类单独1个表(多用)InheritanceType.TABLE_PER_CLASS2、表的设计-每个`子类`单独1个表InheritanceType.JOINED3、表的设计-所有信息放到1个表中 InheritanceType.SINGLE_TABLE 默认类型定义persistence.xml配置单元测试保存运行保存,查看结果InheritanceType.SINGLE_TABLE 详细使用-默认类型定义查询InheritanceType.TAB原创 2021-07-08 22:28:20 · 1026 阅读 · 0 评论 -
9、JPA对象关系-嵌入类型 @Embeddable-@AttributeOverrides
JPA对象关系-嵌入JPA对象关系-嵌入1、类型定义2、persistence.xml3、保存测试4、执行报错5、嵌入类型 列名称修改@AttributeOverrides6、嵌入类型使用注意JPA对象关系-嵌入比如现在有这样一个类对象,保存公司信息,公司信息中有法人信息和运营信息都有人、地址、资金,可以把这6个字段分别对应1个列,每个都有单独的属性字段维护,这样是可以的。但是,这样对于面向对象编程,感觉还是有点多余,其中法人、地址和资金都可再次封装一个对象类型,公司引用2个对象即可1、类型定义@原创 2021-07-08 22:27:51 · 556 阅读 · 1 评论 -
8、JPA对象关系-双向多对多 @JoinTable
JPA对象关系-双向多对多JPA对象关系-双向多对多1、类型定义2、测试保存3、控制台SQL打印输出4、解决双向多对多2个关系表问题 mappedBy双向多对多关系时,如何手动维护关系 @JoinTableJPA对象关系-双向多对多关系型数据库设计时,多对多关系一般会创建1个中间表维护关系,类似JPA 一对多时,默认生成1个中间表维护关系。单向多对多和单向一对多其实是一样的,都会生成1个中间表维护关系。不在详细说明,这里主要说一下双向多对多下面部门和员工为例,1个部门可以有多个员工,同理1个员工可以原创 2021-07-08 22:27:21 · 1548 阅读 · 1 评论 -
7、JPA对象关系-双向多对一(mappedBy比较少用)
JPA对象关系-双向多对一双向多对一(很少用)废话不多数,看下面代码1、实体类定义2、persistence.xml 配置3、单元测试类4、控制台输出5、JPA维护了2个关系6、用`mappedBy`解决双向多对一出现2个关系问题JPA 双向时,也不会级联保存双向多对一,如何手动维护关系?@JoinColumn双向多对一(很少用)双向多对一就是 通过A对象可以找到B对象,同理通过B对象可以找到A对象,他们之间互相依赖。既然他们互相依赖,在JSON序列化或ToString时就会报出栈内存溢出,并且业务原创 2021-07-08 22:26:48 · 494 阅读 · 0 评论 -
6、JPA对象关系-单向一对多(多用)
单向一对多单向一对多1、类定义2、persistence.xml配置3、保存4、单向一对多总结单向一对多查询1、查询,默认一对多是懒加载的2、查询、实时查询集合3种实现排序1、PersistentBag 类型(元素有序,不允许重复)@OrderBy2、PersistentSet 类型(元素无序,不允许重复)@OrderBy3、PersistentList 类型(元素有序,允许重复)@OrderColumn单向一对多JPA 在一对多关系时,默认会多出一个关系表,维护关系;其实用多对一的思想考虑,把关系维原创 2021-07-08 22:26:16 · 614 阅读 · 0 评论 -
5、JPA对象关系-单向多对一(较多)
JPA 对象关系ORM对象关系单向多对一1、表结构2、实体类定义3、persistent.xml设置4、先保存部门(1方),后保存员工5、先保存员工(N方),后保存部门6、单向多对一总结单向多对一 查询1、直接查询 left join2、懒加载 @ManyToOne(fetch = FetchType.LAZY)ORM对象关系在ORM的世界中,关系型数据库表与表之间主要关系分为多对一关系 N-1,关系在多的一方单独列存储一对多关系 1-N ,关系在多的一方单独列存储一对一关系 1-1 ,关原创 2021-07-08 22:25:32 · 427 阅读 · 0 评论 -
4、JPA 一级缓存-延迟加载-对象状态
一级缓存一级缓存缓存清空案例 多次查询时查看打印SQL延迟加载 懒加载对象状态对象状态改变案例分析下面打印出的SQL一级缓存在EntityManager中存在一个一级缓存区域,称之为一级缓存;每次查询时会把查询结果保存到一级缓存区中,下次再次查询时会根据主键ID判断是否缓存中有值,有则直接取出。EntityManager 是线程不安全的,每次请求都会是一个全新的对象,一级缓存只存在于这个EntityManager中,缓存是有限的缓存清空在EntityManager提交事务或关闭之后,一级缓存会被原创 2021-07-08 22:24:44 · 974 阅读 · 0 评论 -
3、JPA 常用注解-主键生成策略
JPA 实体类和表字段映射关系 常用注解实体类和表@Entity@Table实体类属性和列@Id@GeneratedValue@Column@Temporal实体类和表@Entity标识当前类是一个可持久化的类,由JPA管理当前类的持久化操作。可指定name属性,默认类名称一致,JPQL 语言中对应的表名称。select u from User u@Table当前实体和数据库哪个表对应,默认实体类名称,当实体类名称和数据库中表名称不对应时,可指定name实体类属性和列@Id指定当前属性为原创 2021-07-08 22:24:01 · 489 阅读 · 0 评论 -
2、JPA简单CRUD
JPA简单CRUD使用案例几个单元测试几个单元测试@Data@Entitypublic class User { /** * 主键,strategy ID 生成策略,默认AUTO,由数据库自己生成 */ @Id @GeneratedValue(strategy = GenerationType.AUTO) private long id; private String name; @Temporal(value = Tempora原创 2021-07-08 22:22:31 · 300 阅读 · 0 评论 -
1、初识JPA-简单Maven项目搭建
初识JPA,Maven项目搭建JPA是什么?Maven项目搭建1、项目依赖2、persistence.xmlpersistence.xml 需要放到哪个目录下?persistence.xml 内容信息3、hbm2ddl工具-修改表结构如何使用hbm2ddl4、EntityManager 对象创建写一个JPAUtil类获取EntityManger5、案例创建User类6、单元测试,保存实体到数据库表6、项目结构JPA是什么?JPA 是Java Persistence API的简称,持久化API。是JDK5原创 2021-07-03 21:56:51 · 985 阅读 · 0 评论