在我加入的新項目中,他們不斷使用術語Hibernate和JPA。所以,我試圖深入研究代碼,並試圖理解整個事情是如何工作的(我對Spring,JPA和Hibernate世界是新的)。我會盡力把這裏的代碼更好的理解: 1)有@Configuration類,他們有以下幾點:Spring + Hibernate + jpa它是如何工作的?
@Resource
private HibernateJpaVendorAdapter hibernateOracleJpaVendorAdapter;
LocalContainerEntityManagerFactoryBean entityManager =
new LocalContainerEntityManagerFactoryBean();
entityManager.setJpaVendorAdapter(hibernateOracleJpaVendorAdapter);
entityManager.setPersistenceUnitName("abc");
.
.
因此,在這種配置類,我們正在返回EntityManagerFactory的。
2)然後有標記@Persistor一個persistor類,其中存儲庫的方法被調用(例如,用於保存操作):
blahblahRepository.save(blahblahEntity, abcdef);
3)最後有一個存儲庫類,這是帶註釋的@Repository。再說,他們有這樣的一段代碼:
@PersistenceContext(unitName = "same as the name in persistence.xml")
protected EntityManager entityManager;
「保存」方法環繞JPA的persist方法:
getEntityManager().persist(entityObject);
我的問題如下: 1)沒有字關於Hibernate,而不是在hibernateJpaVendorAdapter中。我搜索了整個工作空間,並且只顯示了3個hibernate字樣,全部都在配置文件中。 2)從我擁有的任何知識中,應該使用EntityManagerFactory或EntityManager,但我們都在做?
你沒有這樣做。春天爲你做,並將它注入你的春豆。 –
請原諒我的無知,但我們不是從EntityManagerFactory創建實體管理器。無論我到目前爲止讀過的博客/文檔如何,它都表示:@PersistenceContext(unit =「abc」)EntityManager em; OR @PersistenceUnit EntityManagerFactory emf; EntityManagerFactory.createEntityManager()創建EntityManager。我的理解錯了嗎?如果沒有,那麼我們爲什麼要這樣做? – user123