# Hibernate: Session vs EntityManager



## espresso (3. Jan 2013)

Hallo,
ich bin noch ungeübt in Hibernate und versuche gearde etwas in meine DB zu schreiben. Dabei ist mir aufgefallen, dass es wohl mehrere Möglichkeiten gibt, dies zu tun:

1. Mit einer Session

```
SessionFactory sessionFactory = InitSessionFactory.getInstance();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
 
session.save(subject);

transaction.commit();
session.close();
sessionFactory.close();
```

2. Mit einem EntityManager

```
EntityManagerFactory emf = Persistence.createEntityManagerFactory("eventmanager");
EntityManager em = emf.createEntityManager();
        
EntityTransaction transaction = em.getTransaction();
transaction.begin();
        
em.merge(subject);
        
transaction.commit();
               
em.close();
emf.close();
```

Kann mir jemand erklären, worin der Unterschied besteht bzw. was ich in welchem Kontext verwenden muss?
Warum muss ich hier kein flush verwenden?

Danke und viele Grüße
espresso


----------



## maki (3. Jan 2013)

1. Das ist die "klassische" Hibernate Syntax
2. Das ist die JPA Syntax
3. Wieso solltest du flush verwenden wollen?? Flush and Clear: O/R Mapping Anti-Patterns - Architecture tutorial - developer Fusion


----------



## espresso (3. Jan 2013)

Vielen Dank für die schnelle Antwort.


----------



## JanHH (3. Jan 2013)

Inhaltlich ist es wirklich genau dasselbe, oder? Nur andere Interfaces/Klassen. Aber hinter dem JPA-EntityManager verbirgt sich, wenn man Hibernate für JPA nutzt, die Hibernate-Session.


----------

