摘要:
1、持久化上下文 JPA中有持久化上下文存在,但是开发者不直接与之打交道,持久化上下文在应用程序中是透明的。 我们可以把持久化上下文理解成一个Map,该Map在事务开始的时候创建,在事务结束的时候销毁。在事务中,可以把对象关联到持久化上下文中,比如说findById方法,在查出来的时候,这个对象就跟 阅读全文
摘要:
前面学习过@MappedSuperclass,可以把一些公共的属性提取到添加该注解的类里,如id,creteTime,updateTime等。该类不会生成表,该类中相应的字段都会生成在子类中。该类没有被@Entity注释,不是一个实体。 @Inheritance JPA为我们提供了@Inherita 阅读全文
摘要:
Spring-Data还提供了Web模块的支持,这要求Web组件Spring-MVC的jar包位于classpath下。通常通过使用@EnableSpringDataWebSupport注解来启用继承支持。 SpringDataWebAutoConfiguration上已经添加了@EnableSpr 阅读全文
摘要:
1、问题场景 以用户账户为例,如果允许同时对某个用户的账户进行修改的话,会导致某些修改被覆盖,使最后的结果不正确。 如:1.1、张三的账户中有100元。 1.2、张三的账户消费了50元。 1.3、张三的账户充值了100元。 我们希望的张三账户最终的结果是150元。如果1.2、1.3是并发执行的,按下 阅读全文
摘要:
1、Auditing 一般我们针对一张表的操作需要记录下来,是谁修改的,修改时间是什么,Spring-Data为我们提供了支持。 1.1、在实体类中使用Spring-Data为我们提供的四个注解(也可以选择实现Auditable接口或继承AbstractAuditable类,推荐使用注解) 1.2、 阅读全文
摘要:
有些时候,我们需要自定义Repository实现一些特殊的业务场景。 1、自定义单个Repository 1.1、首先提供一个片段接口和实现(接口的实现默认要使用Impl为后缀,实现本身不依赖spring-data,可以是常规的spring-bean,所以可以注入其他的bean,例如JdbcTemp 阅读全文
摘要:
1、JpaSpecificationExecutor JPA2引入了一个criteria API,我们可以使用它以编程的形式构建查询。通过编写criteria,动态生成query语句。JpaSpecificationExecutor是Spring-Data-JPA为我们执行基于JPA criteri 阅读全文
摘要:
Spring-Data数据查询方法的返回通常的是Repository管理的聚合根的一个或多个实例。但是,有时候我们只需要返回某些特定的属性,不需要全部返回,或者只返回一些复合型的字段。Spring-Data允许我们对特定的返回类型建模,以便更有选择的检索托管聚合的部分视图。 1、基于接口的投影 查询 阅读全文
摘要:
1、抓取策略 在前面说到的关联关系注解中,都有一个fetch属性,@OneToOne、@ManyToOne中都默认是FetchType.EAGER,立即获取。@OneToMany、@ManyToMany默认值是FetchType.LAZY,延迟获取。这些注解的的fetch属性定义的是合适获取,至于如 阅读全文
摘要:
1、@Query 对于少量的查询,使用@NamedQuery在实体上声明查询是一种有效的办法,并且可以很好的工作。由于查询本身绑定到执行它们的java方法,实际上可以通过Spring-Data-Jpa提供的@Query注解来直接绑定它们,而不是将它们注释到domain类。这将domain类从持久化特 阅读全文