List of usage examples for org.hibernate.event.spi EventType MERGE
EventType MERGE
To view the source code for org.hibernate.event.spi EventType MERGE.
Click Source Link
From source file:org.babyfish.hibernate.cfg.Configuration.java
License:Open Source License
@Override public XSessionFactory buildSessionFactory(ServiceRegistry serviceRegistry) throws HibernateException { Arguments.mustBeInstanceOfValue("serviceRegistry", Arguments.mustNotBeNull("serviceRegistry", serviceRegistry), StandardServiceRegistryImpl.class); replacePersisterClassResolver((AbstractServiceRegistryImpl) serviceRegistry); String originalCurrentSessionContext = this.getProperty(Environment.CURRENT_SESSION_CONTEXT_CLASS); this.setProperty(Environment.CURRENT_SESSION_CONTEXT_CLASS, "thread"); SessionFactoryImpl factory;//w w w . j a v a 2s.co m try { pathPlanKeyVlidationSuspended = true; try { factory = (SessionFactoryImpl) super.buildSessionFactory(serviceRegistry); } finally { pathPlanKeyVlidationSuspended = false; } } finally { if (originalCurrentSessionContext != null) { this.setProperty(Environment.CURRENT_SESSION_CONTEXT_CLASS, originalCurrentSessionContext); } else { this.getProperties().remove(Environment.CURRENT_SESSION_CONTEXT_CLASS); } } if (originalCurrentSessionContext != null) { factory.getProperties().setProperty(Environment.CURRENT_SESSION_CONTEXT_CLASS, originalCurrentSessionContext); } else { factory.getProperties().remove(Environment.CURRENT_SESSION_CONTEXT_CLASS); } Dialect dialect = factory.getDialect(); if (dialect instanceof InstallableDialect) { ((InstallableDialect) dialect).install(factory); } EventListenerGroup<MergeEventListener> mergeEventListenerGroup = factory.getServiceRegistry() .getService(EventListenerRegistry.class).getEventListenerGroup(EventType.MERGE); MergeEventListener mergeEventListener = new ObjectModelMergeEventListener( mergeEventListenerGroup.listeners()); mergeEventListenerGroup.clear(); mergeEventListenerGroup.appendListener(mergeEventListener); setQueryPlanceCache(factory, this.createQueryPlanCache(factory)); for (ClassMetadata classMetadata : factory.getAllClassMetadata().values()) { if (Metadatas.getObjectModelFactoryProvider(classMetadata.getMappedClass()) != null) { //Validate whether JPA configuration is same with object model configuration HibernateMetadatas.of(classMetadata.getMappedClass()).getPersistentClass(factory); } } return SessionFactoryImplWrapper.wrap(factory); }
From source file:org.eclipse.emf.cdo.server.internal.hibernate.HibernateStore.java
License:Open Source License
public synchronized SessionFactory getHibernateSessionFactory() { if (cdoDataStore == null) { if (TRACER.isEnabled()) { TRACER.trace("Initializing SessionFactory for HibernateStore"); //$NON-NLS-1$ }/*from www.j ava 2s . c o m*/ currentHibernateStore.set(this); identifierPropertyNameByEntity = new HashMap<String, String>(); try { initDataStore(); // this has to be done before the classmapping is iterated // otherwise it is not initialized SessionFactory hibernateSessionFactory = cdoDataStore.getSessionFactory(); ServiceRegistry serviceRegistry = ((SessionFactoryImpl) hibernateSessionFactory) .getServiceRegistry(); final EventListenerRegistry eventListenerRegistry = serviceRegistry .getService(EventListenerRegistry.class); eventListenerRegistry.setListeners(EventType.MERGE, new CDOMergeEventListener()); final Iterator<?> iterator = cdoDataStore.getConfiguration().getClassMappings(); while (iterator.hasNext()) { final PersistentClass pc = (PersistentClass) iterator.next(); if (pc.getIdentifierProperty() == null) { // happens for featuremaps for now... continue; } identifierPropertyNameByEntity.put(pc.getEntityName(), pc.getIdentifierProperty().getName()); } } catch (Throwable t) { t.printStackTrace(System.err); if (TRACER.isEnabled()) { TRACER.trace(t); } throw new RuntimeException(t); } finally { currentHibernateStore.set(null); } } return cdoDataStore.getSessionFactory(); }
From source file:org.granite.test.tide.hibernate4.data.TestHibernate4JPAChangeSetMerge.java
License:Open Source License
@Override protected void initPersistence() { Map<String, String> props = new HashMap<String, String>(); props.put("hibernate.dialect", org.hibernate.dialect.H2Dialect.class.getName()); props.put("hibernate.hbm2ddl.auto", "create-drop"); props.put("hibernate.show_sql", "true"); props.put("hibernate.connection.driver_class", org.h2.Driver.class.getName()); props.put("hibernate.connection.url", "jdbc:h2:mem:test-changesetmerge"); props.put("hibernate.connection.username", "sa"); props.put("hibernate.connection.password", ""); entityManagerFactory = Persistence.createEntityManagerFactory("hibernate4-changesetmerge-pu", props); try {/* w w w .j a v a 2s. co m*/ SessionFactoryImpl sessionFactory = (SessionFactoryImpl) entityManagerFactory.getClass() .getMethod("getSessionFactory").invoke(entityManagerFactory); EventListenerRegistry registry = sessionFactory.getServiceRegistry() .getService(EventListenerRegistry.class); registry.setListeners(EventType.MERGE, new HibernateDataChangeMergeListener()); } catch (Exception e) { throw new RuntimeException("Could not init persistence", e); } }
From source file:org.granite.tide.hibernate4.Hibernate4ChangeSetIntegrator.java
License:Open Source License
public void integrate(Configuration configuration, SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) { final EventListenerRegistry eventListenerRegistry = serviceRegistry.getService(EventListenerRegistry.class); try {//from ww w . j a v a 2 s . c o m HibernateDataChangePublishListener listener = new HibernateDataChangePublishListener(); eventListenerRegistry.getEventListenerGroup(EventType.POST_INSERT).appendListener(listener); eventListenerRegistry.getEventListenerGroup(EventType.POST_UPDATE).appendListener(listener); eventListenerRegistry.getEventListenerGroup(EventType.POST_DELETE).appendListener(listener); eventListenerRegistry.getEventListenerGroup(EventType.PRE_COLLECTION_UPDATE).appendListener(listener); eventListenerRegistry.getEventListenerGroup(EventType.PERSIST) .addDuplicationStrategy(new OverrideWrapStrategy<PersistEventListener>()); eventListenerRegistry.getEventListenerGroup(EventType.PERSIST) .appendListener(new HibernatePersistListener()); eventListenerRegistry.getEventListenerGroup(EventType.PERSIST_ONFLUSH) .addDuplicationStrategy(new OverrideWrapStrategy<PersistEventListener>()); eventListenerRegistry.getEventListenerGroup(EventType.PERSIST_ONFLUSH) .appendListener(new HibernatePersistOnFlushListener()); eventListenerRegistry.getEventListenerGroup(EventType.SAVE_UPDATE) .addDuplicationStrategy(new OverrideWrapStrategy<SaveOrUpdateEventListener>()); eventListenerRegistry.getEventListenerGroup(EventType.SAVE_UPDATE) .appendListener(new HibernateSaveOrUpdateListener()); eventListenerRegistry.getEventListenerGroup(EventType.MERGE) .addDuplicationStrategy(new OverrideWrapStrategy<MergeEventListener>()); eventListenerRegistry.getEventListenerGroup(EventType.MERGE) .appendListener(new HibernateDataChangeMergeListener()); eventListenerRegistry.getEventListenerGroup(EventType.DELETE) .addDuplicationStrategy(new OverrideWrapStrategy<DeleteEventListener>()); eventListenerRegistry.getEventListenerGroup(EventType.DELETE) .appendListener(new HibernateDeleteListener()); eventListenerRegistry.getEventListenerGroup(EventType.LOCK) .addDuplicationStrategy(new OverrideWrapStrategy<LockEventListener>()); eventListenerRegistry.getEventListenerGroup(EventType.LOCK).appendListener(new HibernateLockListener()); eventListenerRegistry.getEventListenerGroup(EventType.AUTO_FLUSH) .addDuplicationStrategy(new OverrideWrapStrategy<AutoFlushEventListener>()); eventListenerRegistry.getEventListenerGroup(EventType.AUTO_FLUSH) .appendListener(new HibernateAutoFlushListener()); eventListenerRegistry.getEventListenerGroup(EventType.FLUSH) .addDuplicationStrategy(new OverrideWrapStrategy<FlushEventListener>()); eventListenerRegistry.getEventListenerGroup(EventType.FLUSH) .appendListener(new HibernateFlushListener()); } catch (Exception e) { throw new RuntimeException("Could not setup Hibernate 4 listeners", e); } }