Spring boot Spring启动-配置EntityManager

Spring boot Spring启动-配置EntityManager,spring-boot,Spring Boot,我在项目中使用了googleguice,现在我试图将框架完全转换为SpringBoot 我将Bean配置为persistence.xml,类似于下面的 @Autowired @Bean(name=“transactionManager”) public LocalContainerEntityManagerFactoryBean entityManagerFactory() { LocalContainerEntityManagerFactoryBean lEMF=新的LocalContaine

我在项目中使用了
googleguice
,现在我试图将框架完全转换为
SpringBoot

我将Bean配置为
persistence.xml
,类似于下面的

@Autowired
@Bean(name=“transactionManager”)
public LocalContainerEntityManagerFactoryBean entityManagerFactory()
{
LocalContainerEntityManagerFactoryBean lEMF=新的LocalContainerEntityManagerFactoryBean();
lEMF.setPersistenceUnitName(“租赁管理PU”);
setPersistenceXmlLocation(“persistence.xml”);
返回lEMF;
}

现在我需要配置(注入)
EntityManager
em,以执行
JPA操作
em.persist()
em.find
等。。。我如何配置,还有人试图用示例代码解释这一点,
springboot
不需要像
persistence.xml这样的配置文件。您可以使用
注释进行配置
只需在

应用程序属性
spring.datasource.drivercassname=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@DB。。。
spring.datasource.username=username
spring.datasource.password=pass
spring.jpa.database platform=org.hibernate.dial。。。。
spring.jpa.show sql=true
然后,您可以使用Spring提供的
CRUDepository
,其中有标准的
CRUD
事务处理方法。在那里,您还可以实现自己的
SQL
,比如
JPQL

@Transactional
公共接口ObjectRepository扩展了Crudepository{
...
}
如果仍然需要使用
实体管理器
,则可以创建另一个类

公共类ObjectRepositoryImpl实现ObjectCustomMethods{
@持久上下文
私人实体管理者;
}
这应该在您的
pom.xml


org.springframework.boot
spring启动程序父级
1.2.5.1发布
org.springframework.boot
spring引导启动器数据jpa
org.springframework
春季甲虫
org.hibernate
冬眠核心
4.3.11.4最终版本

Hmmm您可以找到许多配置spring框架的示例。无论如何,这是一个样本

@配置
@导入({PersistenceConfig.class})
@ComponentScan(basePackageClasses={
ServiceMarker.class,
RepositoryMarker.class}
)
公共类AppConfig{
}
PersistenceConfig
@配置
@PropertySource(值={“classpath:database/jdbc.properties”})
@启用事务管理
公共类PersistenceConfig{
私有静态最终字符串属性\u NAME\u HIBERNATE\u dialogue=“HIBERNATE.dialogue”;
私有静态最终字符串属性\u NAME\u HIBERNATE\u MAX\u FETCH\u DEPTH=“HIBERNATE.MAX\u FETCH\u DEPTH”;
私有静态最终字符串属性\u NAME\u HIBERNATE\u JDBC\u FETCH\u SIZE=“HIBERNATE.JDBC.FETCH\u SIZE”;
私有静态最终字符串属性\u NAME\u HIBERNATE\u JDBC\u BATCH\u SIZE=“HIBERNATE.JDBC.BATCH\u SIZE”;
私有静态最终字符串属性\u NAME\u HIBERNATE\u SHOW\u SQL=“HIBERNATE.SHOW\u SQL”;
私有静态最终字符串[]ENTITYMANAGER_PACKAGES_TO_SCAN={“a.b.c.entities”,“a.b.c.converters”};
@自动连线
私人环境署;
@Bean(destromethod=“close”)
公共数据源数据源(){
BasicDataSource数据源=新的BasicDataSource();
setDriverClassName(env.getProperty(“jdbc.driverClassName”);
setUrl(env.getProperty(“jdbc.url”);
setUsername(env.getProperty(“jdbc.username”);
setPassword(env.getProperty(“jdbc.password”);
返回数据源;
}
@豆子
公共JpaTransactionManager JpaTransactionManager(){
JpaTransactionManager transactionManager=新的JpaTransactionManager();
setEntityManagerFactory(entityManagerFactoryBean().getObject());
返回事务管理器;
}
私有HibernateJavaEndorapter供应商适配器(){
HibernateJavaEndorapter vendorAdapter=新的HibernateJavaEndorapter();
vendorAdapter.setShowSql(true);
返回供应商适配器;
}
@豆子
public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean(){
LocalContainerEntityManagerFactoryBean entityManagerFactoryBean=新的LocalContainerEntityManagerFactoryBean();
setJpaVendorAdapter(vendorAdaptor());
setDataSource(dataSource());
entityManagerFactoryBean.setPersistenceProviderClass(HibernatePersistenceProvider.class);
setPackagesToScan(ENTITYMANAGER_包到_扫描);
setJpaProperties(jpaHibernateProperties());
返回entityManagerFactoryBean;
}
私有属性jpaHibernateProperties(){
属性=新属性();
PROPERTY.put(PROPERTY_NAME_HIBERNATE_MAX_FETCH_DEPTH,env.getProperty(PROPERTY_NAME_HIBERNATE_MAX_FETCH_DEPTH));
put(PROPERTY_NAME_HIBERNATE_JDBC_FETCH_SIZE,env.getProperty(PROPERTY_NAME_HIBERNATE_JDBC_FETCH_SIZE));
PROPERTY.put(PROPERTY_NAME_HIBERNATE_JDBC_BATCH_SIZE,env.getProperty(PROPERTY_NAME_HIBERNATE_JDBC_BATCH_SIZE));
PROPERTY.put(PROPERTY_NAME_HIBERNATE_SHOW_SQL,env.getProperty(PROPERTY_NAME_HIBERNATE_SHOW_SQL));
properties.put(AvailableSettings.SCHEMA_GEN_DATABASE_ACTION,“none”);
properties.put(AvailableSettings.USE_CLASS_ENHANCER,“false”);
归还财产;
}
}
主要
publicstaticvoidmain(字符串[]args){
try(GenericApplicationContext springContext=newannotationconfigapplicationcontext(AppConfig.class)){
MyService=springContext.getBean(myserviceinpl.class);