我正在使用Spring和存储库级别的数据库连接。我正在使用EntityManagerFactory和jpa存储库。我的配置:
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
LocalContainerEntityManagerFactoryBean em
= new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource());
em.setPackagesToScan("com.project.models");
JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
em.setJpaVendorAdapter(vendorAdapter);
return em;
}
@Bean
public PlatformTransactionManager transactionManager(
EntityManagerFactory emf){
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(emf);
return transactionManager;
}
但是现在我想使用EntityManager的create方法。我该如何获取它的实例,以及在我使用Jpa存储库且没有具体类的地方实现该方法的地方?
我正在使用扩展JpaRepository的存储库:
public interface MyRepository extends JpaRepository<Chat, Integer> {
}
,然后在我的服务中使用它:
@Service
public class MyServiceImpl implements MyService {
private MyRepository myRepository;
public MyServiceImpl(MyRepository myRepository) {
this.myRepository = myRepository;
}
我应该创建一个实现MyRepository的抽象类,这样我就不必实现所有JpaRepository的方法并在那里获取EntityManager的实例了吗?
答案 0 :(得分:0)
通常,您只需要在需要的地方注入EntityManager
。喜欢:
@PersistenceContext
private EntityManager em;
,只需使用方法persist(..)
,例如:
em.persist(myChatObject);
因此不需要任何特殊处理。