Spring-boot与jpa
EntityManagerFactoryBuilder
JPA EntityManagerFactory实例的构建器。
允许你通过一个构建器模式创立一个或者多个LocalContainerEntityManagerFactoryBean,并做少量常见配置。
该构建器中包含了最常见的配置选项。
你也可以在一个带@Bean注解的definition方法返回之前,通过该构建器中配置更多的选项。
该构造器会在org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration中被Spring容器创立好:
@Bean@ConditionalOnMissingBean@SuppressWarnings("deprecation")public EntityManagerFactoryBuilder entityManagerFactoryBuilder(JpaVendorAdapter jpaVendorAdapter, ObjectProvider<PersistenceUnitManager> persistenceUnitManager) { EntityManagerFactoryBuilder builder = new EntityManagerFactoryBuilder(jpaVendorAdapter, this.properties.getProperties(), persistenceUnitManager.getIfAvailable()); builder.setCallback(getVendorCallback()); return builder;}
使用的时候,只要要注入就可:
// 配置实体管理器工厂类:EntityManagerFactory@Bean@Primarypublic LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder builder) { return builder.dataSource(dataSource()) /* 这个packagesToScan必需配置,假如不配置,会出现下面的问题: java.lang.IllegalArgumentException: No persistence unit with name 'sysPU' found 参看源码:org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.obtainPersistenceUnitInfo(DefaultPersistenceUnitManager.java:496)中的readPersistenceUnitInfos()方法 需要配置packagesToScan参数,才能构建一个默认的PersistenceUnit */ .packages("com.system.manage.entity") .persistenceUnit("sysPU") .build();}
LocalContainerEntityManagerFactoryBean
这是一个创立符合JPA标准的EntityManagerFactory的org.springframework.beans.factory.FactoryBean。
这是在Spring应用上下文(application context)中创立JPA EntityManagerFactory bean的最好方式。
可以通过依赖注入(使用@PersistenceContext注解)将EntityManagerFactory传递给基于JPA注解的DAOs。
注意:可以通过配置,切换到JNDI查找或者切换到LocalEntityManagerFactoryBean definition。
根据通用JPA配置商定,配置设置通常从Class Path的META-INF/persistence.xml配置文件读取,就像LocalEntityManagerFactoryBean一样。
但是,你假如使用LocalContainerEntityManagerFactoryBean的话,配置会更加灵活。你可以覆盖persistence.xml文件的位置,可以指定要使用的JDBC数据源等等。
此外,它允许通过Spring的org.springframework.instrument.classloading.LoadTimeWeaver实现可插拔类,而不是绑定到JVM启动时指定的特殊VM代理商。
LocalContainerEntityManagerFactoryBean在内部自己解析persistence.xml文件,并创立相对应的javax.persistence.spi.PersistenceUnitInfo对象(通过进一步合并配置,如JDBC数据源和
org.springframework.instrument.classloading.LoadTimeWeaver),而后传递给选择的JPA Provider(javax.persistence.spi.PersistenceProvider),比方默认的org.hibernate.jpa.HibernatePersistenceProvider。这是一个完全支持标准JPA容器规约的本地JPA容器。
公开的EntityManagerFactory对象实现了下面两种接口:
- 由PersistenceProvider返回的原生EntityManagerFactory接口
- 由当前FactoryBean装配的其余附件元数据的EntityManagerFactoryInfo接口
SharedEntityManagerCreator
在org.springframework.orm.jpa包中。
在这个类中,使用反射创立EntityManager的实现类。
public static EntityManager createSharedEntityManager(EntityManagerFactory emf,........)
创立好之后,由org.springframework.orm.jpa.supportPersistenceAnnotationBeanPostProcessor注入到Dao类中。
PersistenceContext
这是一个注解。
表明了EntityManager与相关联的持久性上下文(persistence context)有依赖关系。
public class BaseDao { @PersistenceContext EntityManager entityManager; ......}
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Spring-boot与jpa