package me.test.ex; import org.hibernate.SessionFactory; import org.hibernate.boot.registry.BootstrapServiceRegistry; import org.hibernate.boot.registry.BootstrapServiceRegistryBuilder; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.jpa.event.spi.JpaIntegrator; import org.hibernate.service.ServiceRegistry; import org.springframework.orm.hibernate4.LocalSessionFactoryBean; import org.springframework.orm.hibernate4.LocalSessionFactoryBuilder; /** * 测试代码。学习、研究使用。请忽略。 * * FIXME 使用Hibernate4的SessionFactory,无法触发实体的{@code @}PrePersist、{@code @}PreUpdate 方法。 * 参考:http://forum.spring.io/forum/spring-projects/data/46235-hibernate-3-2-persistent-lifecycle-annotations-not-work * * @author zll * */ public class LocalSessionFactoryBeanEx extends LocalSessionFactoryBean { @Override protected SessionFactory buildSessionFactory(LocalSessionFactoryBuilder sfb) { final BootstrapServiceRegistryBuilder bootstrapServiceRegistryBuilder = new BootstrapServiceRegistryBuilder(); bootstrapServiceRegistryBuilder.with(new JpaIntegrator()); BootstrapServiceRegistry bootstrapServiceRegistry = bootstrapServiceRegistryBuilder.build(); StandardServiceRegistryBuilder serviceRegistryBuilder = new StandardServiceRegistryBuilder( bootstrapServiceRegistry); // serviceRegistryBuilder.applySettings( configurationValues ); ServiceRegistry serviceRegistry = serviceRegistryBuilder.build(); return sfb.buildSessionFactory(serviceRegistry); } }