Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.baeldung.hibernate.entitylifecycle;
- import com.baeldung.hibernate.entitylifecycle.entity.Person;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.hibernate.engine.spi.EntityEntry;
- import org.hibernate.engine.spi.SessionImplementor;
- import org.springframework.context.annotation.AnnotationConfigApplicationContext;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
- import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
- import org.springframework.orm.hibernate5.HibernateTransactionManager;
- import org.springframework.orm.hibernate5.LocalSessionFactoryBean;
- import org.springframework.transaction.TransactionStatus;
- import javax.sql.DataSource;
- import java.util.Arrays;
- import java.util.List;
- import java.util.Map;
- public class EntityLifecycleApplication {
- @Configuration
- public static class DemoConfiguration {
- @Bean
- public DataSource dataSource() {
- return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2).build();
- }
- @Bean
- public LocalSessionFactoryBean hibernateBuilder(DataSource dataSource) {
- LocalSessionFactoryBean builder = new LocalSessionFactoryBean();
- builder.setAnnotatedClasses(Person.class);
- builder.setDataSource(dataSource);
- return builder;
- }
- }
- public static void main(String[] args) {
- AnnotationConfigApplicationContext appContext = new AnnotationConfigApplicationContext(DemoConfiguration.class);
- SessionFactory sessionFactory = appContext.getBean(SessionFactory.class);
- HibernateTransactionManager txm = new HibernateTransactionManager(sessionFactory);
- TransactionStatus tx = txm.getTransaction(null);
- Session session = sessionFactory.getCurrentSession();
- Arrays.asList("John","Doe","Rudi")
- .stream()
- .forEach(name -> {
- Person p = new Person();
- p.setName(name);
- session.save(p);
- });
- tx.flush();
- tx = txm.getTransaction(null);
- Session session2 = sessionFactory.getCurrentSession();
- List<Person> persons = session2.createQuery("from Person").list();
- System.out.println("number of persons");
- System.out.println(persons.size());
- persons.get(0).setName("Obama");
- Map.Entry<Object, EntityEntry>[] entries = ((SessionImplementor)session2).getPersistenceContext().reentrantSafeEntityEntries();
- for(Map.Entry<Object, EntityEntry> entry:entries) {
- System.out.println(entry.getKey().toString()+" status "+entry.getValue().getStatus());
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement