SpringData JPA 中遇到的问题及注意事项

2018-04-03  本文已影响0人  LeonardoEzio

1.定义了接口继承JpaRepository<T,ID>后,只需在配置类上注解EnableJpaRespositories(basePackes="")便会自动扫描指定包下的Repository接口,为其生成相应的代理类。@EnableJapRespositories注解的作用类似于Mybatis中的MapperScannerConfigurer Bean

2.JpaRepository中的getOne方法,类似于Hibernate中的load于Iterator方法,会产生懒加载的问题,在查询时会返回一个代理对象,对象在第一次使用前不能关闭事务,连接。

3.当实现类的方法上注解了@Transactional后,不能通过该实现类来获得Bean,只能通过该实现类的接口类来获得Bean。
原理:
开启事务需要使用到AOP的功能,而AOP功能又要通过代理来实现,默认使 用的JDK代理只能通过接口来生成代理类。

4.Repository接口中支持自定义查询。
@Query("select s from student s where s.id = ?1 ")
public Student find (int id)

5.懒加载导致的4的问题的解决:
过滤器 OpensessionInViewFilter (页面打开时开启Session,页面关闭时关闭Session)

上一篇下一篇

猜你喜欢

热点阅读