Advertisement
bungrudi

Untitled

Aug 9th, 2018
560
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.67 KB | None | 0 0
  1. package com.baeldung.hibernate.entitylifecycle;
  2.  
  3. import com.baeldung.hibernate.entitylifecycle.entity.Person;
  4. import org.hibernate.Session;
  5. import org.hibernate.SessionFactory;
  6. import org.hibernate.engine.spi.EntityEntry;
  7. import org.hibernate.engine.spi.SessionImplementor;
  8. import org.springframework.context.annotation.AnnotationConfigApplicationContext;
  9. import org.springframework.context.annotation.Bean;
  10. import org.springframework.context.annotation.Configuration;
  11. import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
  12. import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
  13. import org.springframework.orm.hibernate5.HibernateTransactionManager;
  14. import org.springframework.orm.hibernate5.LocalSessionFactoryBean;
  15. import org.springframework.transaction.TransactionStatus;
  16.  
  17. import javax.sql.DataSource;
  18. import java.util.Arrays;
  19. import java.util.List;
  20. import java.util.Map;
  21.  
  22. public class EntityLifecycleApplication {
  23.   @Configuration
  24.   public static class DemoConfiguration {
  25.     @Bean
  26.     public DataSource dataSource() {
  27.       return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2).build();
  28.     }
  29.  
  30.     @Bean
  31.     public LocalSessionFactoryBean hibernateBuilder(DataSource dataSource) {
  32.       LocalSessionFactoryBean builder = new LocalSessionFactoryBean();
  33.       builder.setAnnotatedClasses(Person.class);
  34.       builder.setDataSource(dataSource);
  35.  
  36.       return builder;
  37.     }
  38.   }
  39.  
  40.  
  41.     public static void main(String[] args) {
  42.     AnnotationConfigApplicationContext appContext = new AnnotationConfigApplicationContext(DemoConfiguration.class);
  43.  
  44.     SessionFactory sessionFactory = appContext.getBean(SessionFactory.class);
  45.     HibernateTransactionManager txm = new HibernateTransactionManager(sessionFactory);
  46.     TransactionStatus tx = txm.getTransaction(null);
  47.  
  48.     Session session = sessionFactory.getCurrentSession();
  49.  
  50.     Arrays.asList("John","Doe","Rudi")
  51.         .stream()
  52.         .forEach(name -> {
  53.           Person p = new Person();
  54.           p.setName(name);
  55.           session.save(p);
  56.         });
  57.     tx.flush();
  58.  
  59.     tx = txm.getTransaction(null);
  60.     Session session2 = sessionFactory.getCurrentSession();
  61.     List<Person> persons = session2.createQuery("from Person").list();
  62.     System.out.println("number of persons");
  63.     System.out.println(persons.size());
  64.  
  65.     persons.get(0).setName("Obama");
  66.  
  67.     Map.Entry<Object, EntityEntry>[] entries = ((SessionImplementor)session2).getPersistenceContext().reentrantSafeEntityEntries();
  68.     for(Map.Entry<Object, EntityEntry> entry:entries) {
  69.       System.out.println(entry.getKey().toString()+" status "+entry.getValue().getStatus());
  70.     }
  71.  
  72.     }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement