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)
网友评论