首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一篇 JPA 总结

默认情况下,JPA 自动选择一个最适合底层数据库的主键生成策略:SqlServer 对应 identity,MySQL 对应 auto increment IDENTITY:采用数据库 ID自增长的方式来自增主键字段...关联关系映射(使用 IDEA 可以使用实体生成表,也可以使用对应的额表逆向生成实体类) 单向对一(orders - customer) 表结构(oreders 表中有 customer 表的外键映射...单向一对(company - employee) 表结构 ? ? 实体映射 ? ? 关联关系维护 ?...使用 IDEA 反向生成实体(双向一对一) ? 双向映射 配置一览图(实体生成数据表),核心配置如下图所示,对于添加数据获取数据代码不再展示 ?...JPQL 还支持二级缓存,order by 子句,group by 子句,聚合查询,having 子句,关联查询,子查询等,JPQL 还有大量函数,如字符串处理函数,算术函数和日期函数等功能,这里就不再一一列举

5.6K20

spring boot 中使用 jpa以及jpa介绍

它创造了的值生成的表。 @AccessType 这种类型的注释用于设置访问类型。...这是用在对一和一对多关联。 @UniqueConstraint 指定的字段和用于主要或辅助表的唯一约束。 @ColumnResult 参考使用select子句的SQL查询中的列名。...@ManyToMany 定义了连接表之间的一对的关系。 @ManyToOne 定义了连接表之间的对一的关系。 @OneToMany 定义了连接表之间存在一个一对的关系。...该参数的几种配置如下: ·create:每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因...那么JPA是通过什么规则来根据方法名生成sql语句查询的呢?

3.8K10
您找到你想要的搜索结果了吗?
是的
没有找到

Java后端学习流程

只要学会上面的前7条,基本上从前台到后台开发常见的应用还是太大问题的,当然学习了框架以后,那就最好了,但关键还是要学好基础,说实话,像下面这个表格中所列的知识点,真正能全面掌握还是有难度的,所以凡事还是要踏踏实实的静下心学习...数据库设计优化WHERE子句中的连接顺序,选择最有效率的表名顺序,SELECT子句中避免使用 ‘ * ‘ 计算记录条数等等。数据备份与移植移植技巧,备份方案;导入导出等。...第六进阶阶段技术名称技术内容web高级进阶 (项目实战)openJpa技术JPA介绍及开发环境搭建、单表实体映射、一对/对一、一对一、对多关联、实体继承、复合主键、JPQL语句、EntityManager...API、事务管理,了解一下jpa2.0的新特性以及应用。...生成静态页技术什么是静态页,为什么需要静态页以及带来的好处,生成静态页的模版技术Velocity和Freemark,生成静态页的访问规则等。

1.3K21

Java学习路线图分析

技术内容 J2SE(java基础部分) java开发前奏 计算机基本原理,Java语言发展简史以及开发环境的搭建,体验Java程序的开发,环境变量的设置,程序的执行过程,相关反编译工具介绍,java开发工具Eclipse...数据库设计优化 WHERE子句中的连接顺序,选择最有效率的表名顺序,SELECT子句中避免使用 ‘ * ‘ 计算记录条数等等。 数据备份与移植 移植技巧,备份方案;导入导出等。...第六进阶阶段 技术名称 技术内容 web高级进阶(项目实战) openJpa技术 JPA介绍及开发环境搭建、单表实体映射、一对/对一、一对一、对多关联、实体继承、复合主键、JPQL语句、EntityManager...API、事务管理,了解一下jpa2.0的新特性以及应用。...生成静态页技术 什么是静态页,为什么需要静态页以及带来的好处,生成静态页的模版技术Velocity和Freemark,生成静态页的访问规则等。

1.3K101

Java进阶学习路线图「建议收藏」

J2SE (Java基础部分) java开发前奏 计算机基本原理,Java语言发展简史以及开发环境的搭建,体验Java程序的开发,环境变量的设置,程序的执行过程, 相关反编译工具介绍,java开发工具Eclipse...数据库设计优化 WHERE子句中的连接顺序,选择最有效率的表名顺序,SELECT子句中避免使用 ‘ * ‘ 计算记录条数等等。 数据备份与移植 移植技巧,备份方案;导入导出等。...第六进阶阶段 技术名称 技术内容 web高级进阶 (项目实战) openJpa技术 JPA介绍及开发环境搭建、单表实体映射、一对/对一、一对一、对多关联、实体继承、复合主键、JPQL语句、EntityManager...API、事务管理,了解一下jpa2.0的新特性以及应用。...生成静态页技术 什么是静态页,为什么需要静态页以及带来的好处,生成静态页的模版技术Velocity和Freemark,生成静态页的访问规则等。

88430

Java学习路线图分析

技术内容 J2SE(java基础部分) java开发前奏 计算机基本原理,Java语言发展简史以及开发环境的搭建,体验Java程序的开发,环境变量的设置,程序的执行过程,相关反编译工具介绍,java开发工具Eclipse...数据库设计优化 WHERE子句中的连接顺序,选择最有效率的表名顺序,SELECT子句中避免使用 ‘ * ‘ 计算记录条数等等。 数据备份与移植 移植技巧,备份方案;导入导出等。...第六进阶阶段 技术名称 技术内容 web高级进阶(项目实战) openJpa技术 JPA介绍及开发环境搭建、单表实体映射、一对/对一、一对一、对多关联、实体继承、复合主键、JPQL语句、EntityManager...API、事务管理,了解一下jpa2.0的新特性以及应用。...生成静态页技术 什么是静态页,为什么需要静态页以及带来的好处,生成静态页的模版技术Velocity和Freemark,生成静态页的访问规则等。

1.1K30

高级框架-springDate-JPA 第二天【悟空教程】

JPA 第二天 第1章 JPA 中的主键生成策略 通过annotation(注解)来映射实体类和数据库表的对应关系,基于annotation的主键标识为@Id注解, 其生成规则由@GeneratedValue...从图可以看出,系统设计的三种实体关系分别为:一对一对一关系。注意:一对多关系可以看为两种: 即一对对一。所以说四种更精确。...明确: 我们今天只涉及实际开发中常用的关联关系,一对。...在不考虑兼职的情况下,公司和员工的关系即为一对。 4.2 表关系建立 在一对多关系中,我们习惯把一的一方称之为主表,把的一方称之为从表。...所以我们说,用户和角色之间的关系是。 5.2 表关系建立 的表关系建立靠的是中间表,其中用户表和中间表的关系是一对,角色表和中间表的关系也是一对,如下图所示: ?

2.5K10

什么是JPA?Java Persistence API简介

JPA支持生成对象主键的其他策略。它还有用于更改单个字段名称的注释。通常,JPA足够灵活,可以适应您可能需要的任何持久性映射。...在表和对象中都有四种实体关系: 一到 许多到一 许多一对 一比一 每种类型的关系描述了实体与其他实体的关系。...例如,Musician实体可以与由诸如List或Set的集合表示的实体具有一对的关系。...您可以使用注释来自定义提取策略,但JPA的默认配置通常可以直接使用,无需更改: 一对:lazy 对一:eager :lazy 一对一:eager JPA安装和设置 最后,我们将简要介绍如何为Java...清单8.将EclipseLink包含为Maven依赖项 org.eclipse.persistence eclipselink 2.5.0-RC1 您还需要包含数据库的驱动程序,如清单9所示。

10.1K30

Spring Data开发手册|Java持久化API(JPA)需要了解到什么程度呢?

目录怎么知道这篇到底有多少干货呢?...以前的开发模式 JPA是什么 JPA解决了什么问题 JPA的第一个HelloWord程序 详解配置文件 常用的注解 一对一的问题 一对的问题 的问题 JPA中常见的方法 JPA中对象的状态 注意事项..."); idCard.setPeople(people); entityManager.persist(idCard); JPAUtils.close(); } 一对的问题...需求:部门和员工的对应 部门----->员工 一对的关联关系 代码演示: 声明部门对象: @Entity @Table public class Dept { @Id @GeneratedValue...需求:一个学生可以被多个老师教,一个老师也可以教多个学生 学生----->老师 一对 老师----->学生 一对 老师和学生的最终关系 的关联关系

1.3K30

让SQL起飞(优化)

HAVING子句是针对聚合后生成的视图进行筛选的,但是很多时候聚合后的视图都没有继承原表的索引结构。...-- 走索引 SELECT * FROM SomeTable WHERE col_1 LIKE'%a'; -- 走索引 SELECT * FROM SomeTable WHERE...3.1 使用HAVING子句 对聚合结果指定筛选条件时,使用HAVING子句是基本原则。不习惯使用HAVING子句的人可能会倾向于像下面这样先生成一张中间表,然后在WHERE子句中指定筛选条件。...,所以比起生成中间表后再执行的WHERE子句,效率会更高一些,而且代码看起来也更简洁。...连接表双方是一对一、一对的关系时,连接运算后数据的行数不会增加。而且,因为在很多设计中的关系都可以分解成两个一对的关系,因此这个技巧在大部分情况下都可以使用。

1.4K42

JPA关系映射之one-to-one、one-to-many、many-to-one和many-to-many

SpringDataJPA是Spring Data的一个子项目,通过提供基于JPA的Repository极大的减少了JPA作为数据访问方案的代码量,你仅仅需要编写一个接口集成下SpringDataJPA...前言 本篇文章引导你通过Spring Boot,Spring Data JPA和MySQL 映射一对一外键、一对一主键、一对对一,额外的列的关系。...该属性值可以通过应该自身创建,但是Hibernate推荐通过Hibernate生成 @GeneratedValue 指定主键的生成策略。...@OneToOne 一对一关联关系 @JoinColumn 指定关联的字段 Spring Data JPA Repository public interface BookRepository extends...、一对对一,额外的列参考如上。

1.2K30

关于Java持久化相关的资源汇集:Java Persistence API

JPA规范着重关注与数据存储交互的Java API。可以设想,JPA绑定到AquaLogic DSP,或SDO绑定到Kodo产品(BEA的JPA实现)。 问题:JPA是否支持惰性加载? 回答:是的。...另一方面,数据库承担这么负载将对该应用程序的用户产生负面影响,因此最好付出一定代价跨网络拉出这些数据,以便将该数据库用作严格的存储系统,而不是计算引擎。...回答:JPA规范没有为此提供任何工具。OpenJPA通过 fetch规划 接口提供了对fetch特征的详细控制。JPQL的“JOIN FETCH”结构也可以用于限制主动fetch提示。...但是,据我所知,当前的JPA实现都没有这么作,除非是通过数据库方的工作来实现多数据库查询。 问题:在JPQL中,SELECT子句可以从多个实体中拉出数据吗? 回答:是的。...回答:我认为这与“一对一”和“对一”字段类型的不同默认行为有关。我猜想,如果您明确地告知Kodo对“一对一”和“对一”字段类型执行惰性加载,就会很清楚。

2.5K30

springboot整合H2(内置一个月对JPA的学习)

这个一般加载被控端(外键的那种表) 修改 修改我们上面已经看过了,其实还是save 这里不展示了 查询 查询也是一样 上面已经用很大篇幅说了 调用findAll就行 一对 单向 场景: 校内组织了论坛活动...默认中间表的命名是一对中一表名_一对的表名 使用@JoinColumn(name = "user_id")指定关联字段 避免中间表的产生 注意点 @JoinColumn如果不加,也可以生成一对的关联...,但是会生成中间表,一般情况下1对我们不会建立的,所以都会加上 双向 修改文章实体类 @ManyToOne(cascade = CascadeType.ALL) //级联操作 @JoinColumn(...articles = new ArrayList(); 存在问题 使用增加接口,会发现我们的my_user_id字段没有字段关联 经过搜索 大概结论是 需要手动set我们的关系 代码如下 /** * 一对...,关联了两个表的关系 请求查询接口 发现我们什么都没动,他就已经可以实现多表关联了 两个字段 这两个名字我们没有指定,但是jpa自动用表名id/字段名id给我们生成的 t_user_id books_id

3.4K10

如何在 Spring Boot 中 读写数据

因为 JPA 需要实体类提供一个无参构造器,所以这里利用 Lombok 的 @NoArgsConstructor 注解来生成这个构造器。...(1)@OneToOne @OneToOne 用来表示一对一的关系,放置在主导类上。...比如用户类会有一个指定密码表的主键 pwd_id,将 @OneToOne 放置在用户类的 pwd 字段上,就可以表示用户类与密码类是一对一的关系,并且主导类是用户类。...所以,如果站在部门的角度来看 在分析用户与部门之间的关系时,一个员工只能属于一个部门,但是一个部门可以包含有多个员工,如果我们站在部门的角度来看,部门与员工之间就是一对的关系,在部门实体类 Department...@JoinColumn(name = "department_id") private Department department; (4)@ManyToMany() 用户与角色之间是的关系

15.8K10

持久层框架中是什么让你选择 MyBatis?

在 Java 这种纯面向对象的语言中,两个 Java 对象之间可能存在一对一、一对对多等复杂关联关系。...下面我们就来结合示例介绍“一对”关联关系。例如,一个顾客(Customer)可以创建多个订单(Order),而一个订单(Order)只属于一个顾客(Customer),两者之间存在一对的关系。...(t_customer)的主键 id,从而维护这种一对的关系,如下图所示:图片关系模型中的一对和对象模型中的一对多在 Hibernate 中,可以通过如下 Customer.hbm.xml 配置文件将这两种关系进行映射...因为在一些场景中,数据库设计非常复杂,表与表之间的关系错综复杂,Hibernate 引擎生成的 SQL 语句会非常难以理解,要让生成的 SQL 语句使用正确的索引更是难上加难,这就很容易生成慢查询 SQL...、一对对多关系映射以及相应的双向关系映射。

37630

JPA作持久层操作

JPA(Hibernate是jpa的实现) jpa是对实体类操作,从而通过封装好的接口直接设置数据库的表结构。...(其实是国内程序员乱搞,国外的比较有规矩) 本文只介绍了jpa的基本使用操作以及基本语法 JPA VS Mybatis 大项目用mybatis,小项目(微服务:小程序等)用JPAJPA...方便,但大项目到后期需要从sql语句上优化时JPA无法优化) JPA操作 jpa是javax包下的,所以后面导包的时候注意一下,别导错了。...对:需要的那方原本就有字段,才可以用该字段对应注解这方的主键 一对一 而用户信息和用户详细信息之间形成了一对一的关系,那么这时我们就可以直接在类中指定这种关系: @Data @Entity @Table...插入时,自动生成的主键ID为:6,外键ID为:3 一对 接着我们来看一对多关联,比如每个用户的成绩信息: Account类: @JoinColumn(name = "uid") //注意这里的name

1.1K10
领券