java - Hibernate SessionFactory vs. EntityManagerFactory




3 Answers

Prefira EntityManagerFactory e EntityManager . Eles são definidos pelo padrão JPA.

SessionFactory e Session são específicas do hibernate. O EntityManager invoca a sessão de hibernação sob o capô. E se você precisar de alguns recursos específicos que não estão disponíveis no EntityManager , você pode obter a sessão chamando:

Session session = entityManager.unwrap(Session.class);

Eu sou novo no Hibernate e não estou claro se deve usar um SessionFactory ou EntityManagerFactory para obter a sessão de hibernação. Qual é a diferença entre os dois? Prós e contras?




O uso da abordagem EntityManagerFactory nos permite usar anotações de método de retorno de chamada como @PrePersist, @ PostPersist, @ PreUpdate sem nenhuma configuração extra.

Usar retornos de chamada semelhantes ao usar o SessionFactory exigirá esforços extras.

Documentos relacionados ao Hibernate podem ser encontrados here e here .

Discussão sobre SOF Question e Spring Fórum




Usando o EntityManager, o código não é mais fortemente acoplado ao modo de hibernação. Mas para isso, em uso, devemos usar:

javax.persistence.EntityManager

ao invés de

org.hibernate.ejb.HibernateEntityManager

Da mesma forma, para EntityManagerFactory, use a interface javax. Dessa forma, o código é fracamente acoplado. Se houver uma implementação JPA 2 melhor que a hibernação, a comutação seria fácil. Em casos extremos, podemos digitar cast para o HibernateEntityManager.




Related