Spring Data JPA
文章平均质量分 86
Spring Data JPA全面进阶
流烟默
这个作者很懒,什么都没留下…
展开
-
几种常见的ORM框架
【1】Mybatis官网地址:https://github.com/mybatis/mybatis-3① 概要MyBatis 是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的JDBC 代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。mybatis原是Apache的一个开源项目iBatis, 201原创 2021-07-04 10:22:00 · 11488 阅读 · 0 评论 -
Spring Data JPA之JpaSpecificationExecutor复杂动态查询实例
本文接SpringDataJPA查询方法那些事继续学习JpaSpecificationExecutor复杂动态查询。【1】回顾简单查询简单动态查询实例如下: public Page<User> test(){ Sort sort = new Sort(Sort.Direction.DESC,&原创 2018-11-28 11:18:12 · 18553 阅读 · 8 评论 -
Spring Data JPA 查询方法那些事
Spring Data 提供了几个接口供继承使用,如 JpaRepository,另外还规定了方法查询中的关键字,即你命名的查询方法需要符合规范。详情参考:SpringBoot整合Spring Data JPA、SpringDataJPA入门。本篇博文详细记录Spring Data JPA查询中的那些事。【1】方法查询① 只要符号命名规范的接口都可以被正常解析使用如下所示:...原创 2018-09-09 16:12:56 · 17869 阅读 · 5 评论 -
SpringBoot整合SpringData与JPA
前面说过对于数据访问层,无论是SQL还是NOSQL,Spring Boot默认采用整合 Spring Data的方式进行统一处理,添加大量自动配置,屏蔽了很多设置。引入各种xxxTemplate,xxxRepository来简化我们对数据访问层的操作。对我们来说只需要进行简单的设置即可。结构示意图如下:【1】SpringData如下图所示,SpringBoot提供了许多dat...原创 2018-06-27 13:41:52 · 12570 阅读 · 4 评论 -
Spring Data JPA入门简解与XML配置实现
Spring Data 项目的目的是为了简化构建基于Spring 框架应用的数据访问技术,包括非关系数据库、Map-Reduce 框架、云数据服务等等。另外也包含对关系数据库的访问支持。SpringData有许多子项目,其中一个为Spring Data JPA 。【1】JPAJPA是sun提出的一个对象持久化规范,各JavaEE应用服务器自主选择具体实现。JPA的设计者是Hib...原创 2018-06-27 18:15:57 · 9634 阅读 · 1 评论 -
JPA - Persistence与EntityManagerFactory简解
【1】Persistence类Persistence 类是用于获取 EntityManagerFactory 实例。该类包含一个名为 createEntityManagerFactory 的 静态方法 。createEntityManagerFactory 方法有如下两个重载版本。① 带有一个参数的方法:以 JPA 配置文件 persistence.xml 中的持久化单元名为参数;② 带有两个参数原创 2017-12-08 10:21:44 · 15245 阅读 · 1 评论 -
JPQL-Query查询实例详解
前面学习了JPQL语言和Query接口。这里学习一下如果通过JPQL和Query接口进行数据的查询、更新和删除。【1】普通查询首先说明一下FROM子句和Select-FROM。from 子句是查询语句的必选子句。Select 用来指定查询返回的结果实体或实体的某些属性。From 子句声明查询源实体类,并指定标识符变量(相当于SQL表的别名)。如果不希望返回重复实体,可使用关键字 distinct 修原创 2017-12-12 11:11:39 · 10258 阅读 · 1 评论 -
JPQL语言和Query接口简解
【1】JPQL语言JPQL语言,即 Java Persistence Query Language 的简称。JPQL 是一种和 SQL 非常类似的中间性和对象化查询语言,它最终会被编译成针对不同底层数据库的 SQL 查询,从而屏蔽不同数据库的差异。JPQL语言的语句可以是 select 语句、update 语句或delete语句,它们都通过 Query 接口封装执行。【2】Query接口Query接原创 2017-12-12 10:39:06 · 1342 阅读 · 1 评论 -
JPA - 一级和二级缓存使用详解
【1】一级缓存JPA默认情况下开启一级缓存。示例代码如下: @Test public void testSecondLevelCache(){ Customer customer1 = entityManager.find(Customer.class, 1); Customer customer2 = entityManager.find(Custom原创 2017-12-11 21:08:07 · 5258 阅读 · 0 评论 -
JPA - 双向多对多映射
在双向多对多关系中,我们必须指定一个关系维护端(owner side),可以通过 @ManyToMany 注释中指定 mappedBy 属性来标识其为关系维护端。【1】item与Categoryitem:category = N:N 。item类如下:@Table(name="JPA_ITEMS")@Entitypublic class Item { private Integer id;原创 2017-12-11 20:47:16 · 4058 阅读 · 1 评论 -
JPA - 双向1对1映射
基于外键的 1-1 关联关系:在双向的一对一关联中,需要在关系被维护端(inverse side)中的 @OneToOne 注释中指定 mappedBy,以指定是这一关联中的被维护端。同时需要在关系维护端(owner side)建立外键列指向关系被维护端的主键列。【1】Manager与Department一个部门与一个经理唯一对应。Manager实体类如下:@Table(name="JPA_MANA原创 2017-12-10 16:32:55 · 1255 阅读 · 0 评论 -
JPA - 双向多对一映射
【1】修改Order和CustomerOrder:Customer = N:1。Order如下:@Table(name="JPA_ORDERS")@Entitypublic class Order { private Integer id; private String orderName; private Customer customer; @GeneratedVa原创 2017-12-10 16:04:00 · 842 阅读 · 0 评论 -
JPA - 单向一对多映射
【1】Order与CustomerCustomer:Order = 1:N;将Order修改如下:@Table(name="JPA_ORDERS")@Entitypublic class Order { private Integer id; private String orderName; @GeneratedValue @Id public Intege原创 2017-12-10 15:34:49 · 1706 阅读 · 0 评论 -
JPA - 单向多对一映射
【1】Customer与OrderOrder:Customer=N:1;Order如下:import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.GeneratedValue;import javax.p原创 2017-12-10 14:00:44 · 1841 阅读 · 0 评论 -
JPA - EntityTransaction与事务
EntityTransaction 接口用来管理资源层实体管理器的事务操作。通过调用实体管理器的getTransaction方法 获得其实例。其常用方法如下:① begin用于启动一个事务,此后的多个数据库操作将作为整体被提交或撤消。若这时事务已启动则会抛出 IllegalStateException 异常。② commit 用于提交当前事务。即将事务启动以后的所有数据库更新操作持久化至数据库中。③原创 2017-12-10 11:22:59 · 1509 阅读 · 0 评论 -
JPA - EntityManager详解
【1】EntityManager介绍在 JPA 规范中, EntityManager 是完成持久化操作的核心对象。实体作为普通 Java 对象,只有在调用 EntityManager 将其持久化后才会变成持久化对象。EntityManager 对象在一组实体类与底层数据源之间进行 O/R 映射的管理。它可以用来管理和更新 Entity Bean, 根椐主键查找 Entity Bean, 还可以通过J原创 2017-12-08 14:38:21 · 31970 阅读 · 3 评论 -
JPA中实体类属性相关注解与数据表列映射详解
① @Entity@Entity 标注用于实体类声明语句之前,指出该Java 类为实体类,将映射到指定的数据库表。如声明一个实体类 Customer,它将映射到数据库中的 customer 表上。② @Table当实体类与其映射的数据库表名不同名时需要使用 @Table 标注说明,该标注与 @Entity 标注并列使用,置于实体类声明语句之前,可写于单独语句行,也可与声明语句同行。@Table 标注原创 2017-12-07 21:17:03 · 10641 阅读 · 0 评论