以EntityManager Jpa的实例

时间:2019-04-12 11:55:13

标签: java spring hibernate jpa entitymanager

我正在使用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的实例了吗?

1 个答案:

答案 0 :(得分:0)

通常,您只需要在需要的地方注入EntityManager。喜欢:

@PersistenceContext
private EntityManager em;

,只需使用方法persist(..),例如:

em.persist(myChatObject);

因此不需要任何特殊处理。