Главная

Java

Spring


EntityManager :

Работаем с ним только в обычном Spring (без Spring Boot).

javax.persistence.EntityManager



1) внедрение через IoC-контейнер :

@PersistenceContext //контейнер отвечает за начало, принятие или откат транзакции.
EntityManager entityManager;


public void saveMovie() {
  entityManager.getTransaction().begin();
     
    Movie movie = new Movie();
    movie.setId(1L);
    movie.setMovieName("The Godfather");
    movie.setReleaseYear(1972);
    movie.setLanguage("English");
 
    entityManager.persist(movie);
    entityManager.getTransaction().commit();
    }

public Movie getMovie(Long movieId) {
    Movie movie = entityManager.find(Movie.class, new Long(movieId));
    entityManager.detach(movie); //  «отделённая» (detached). Отделённая сущность теряет связь с базой данных и изменения в ней в базу сами не попадают.     
    return movie;
}


2) ручное внедрение :


EntityManagerFactory emf = Persistence.createEntityManagerFactory("com.example.movie_catalog");

public static EntityManager getEntityManager() {
    return emf.createEntityManager();
}




persistence.xml :

META-INF/persistence.xml

<persistence-unit name="com.example.movie_catalog">
    <description>Hibernate EntityManager Demo</description>
    <class>com.example.hibernate.pojo.Movie</class> 
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
        <properties>
            <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" /> <!-- DB Driver -->
            <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost/dbName" /> <!-- BD Mane -->
            <property name="javax.persistence.jdbc.user" value="postgres" /> <!-- DB User -->
            <property name="javax.persistence.jdbc.password" value="12345" /> <!-- DB Password -->

		  <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/> <!-- DB Dialect -->
            <property name="hibernate.hbm2ddl.auto" value="update" /> <!-- create / create-drop / update -->
            
            <property name="hibernate.show_sql" value="true" /> <!-- Show SQL in console -->
            <property name="hibernate.format_sql" value="true" /> <!-- Show SQL formatted -->
        </properties>
</persistence-unit>



Полезные ссылки :