我使用spring和repository级别来连接数据库。我正在使用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的创建方法。我如何获取它的实例,以及当我使用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的实例,我该怎么做呢?
通常你只需要在任何需要的地方注入EntityManager
。喜欢:
@PersistenceContext
private EntityManager em;
并使用方法persist(..)
像:
em.persist(myChatObject);
所以不需要任何特殊处理。