以EntityManager Jpa为例

问题描述 投票:0回答:1

我使用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的实例,我该怎么做呢?

java spring hibernate jpa entitymanager
1个回答
0
投票

通常你只需要在任何需要的地方注入EntityManager。喜欢:

@PersistenceContext
private EntityManager em;

并使用方法persist(..)像:

em.persist(myChatObject);

所以不需要任何特殊处理。

© www.soinside.com 2019 - 2024. All rights reserved.