Принимая экземпляр EntityManager Jpa - PullRequest
0 голосов
/ 12 апреля 2019

Я использую 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;
}

Но теперь у меня есть случай, когда я хочу использовать метод create 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, и как я могу это сделать?

1 Ответ

0 голосов
/ 12 апреля 2019

Обычно вы просто вводите EntityManager там, где вам это нужно.Например:

@PersistenceContext
private EntityManager em;

и просто используйте метод persist(..), например:

em.persist(myChatObject);

, поэтому не требуется никакой специальной обработки.

...