JpaRepositoryFactory和相应的Spring集成
JpaRepositoryFactorybean的设计背后的一般原则如下:
我们假设你在托管的 JPA运行时环境中运行应用程序,而不关心哪个。
这就是我们依赖注入
EntityManager而不是依赖的原因
EntityManagerFactory。根据定义,
EntityManager这不是线程安全的。因此,如果
EntityManagerFactory直接处理,我们将不得不重写所有资源管理代码,托管运行时环境(就像Spring或EJB一样)将为你提供。
为了与Spring事务管理集成,我们使用Spring的方法
SharedEntityManagerCreator,它实际上完成了你手动实现的事务资源绑定魔术。因此,你可能想使用该EntityManager实例从中创建实例
EntityManagerFactory。如果你想直接在存储库bean处激活事务性(以便
repo.save(…)在没有活动的情况下调用例如创建事务),请查看
TransactionalRepositoryProxyPostProcessorSpring Data Commons中的实现。实际上,当直接使用Spring Data存储库时(例如
repo.save(…)),它会激活事务,并略微定制事务配置查找,以使接口优先于实现类,以允许存储库接口覆盖定义的事务配置
SimpleJpaRepository。



