private void errorIfResourceLocalDueToExplicitSynchronizationType() { // JPA requires that we throw IllegalStateException in cases where: // 1) the PersistenceUnitTransactionType (TransactionCoordinator) is non-JTA // 2) an explicit SynchronizationType is specified if ( !getServiceRegistry().getService( TransactionCoordinatorBuilder.class ).isJta() ) { throw new IllegalStateException( "Illegal attempt to specify a SynchronizationType when building an EntityManager from a " + "EntityManagerFactory defined as RESOURCE_LOCAL (as opposed to JTA)" ); } }
@Override public JdbcConnectionAccess getJdbcConnectionAccess() { // See class-level JavaDocs for a discussion of the concurrent-access safety of this method if ( jdbcConnectionAccess == null ) { if ( !factory.getSettings().getMultiTenancyStrategy().requiresMultiTenantConnectionProvider() ) { jdbcConnectionAccess = new NonContextualJdbcConnectionAccess( getEventListenerManager(), factory.getServiceRegistry().getService( ConnectionProvider.class ) ); } else { jdbcConnectionAccess = new ContextualJdbcConnectionAccess( getTenantIdentifier(), getEventListenerManager(), factory.getServiceRegistry().getService( MultiTenantConnectionProvider.class ) ); } } return jdbcConnectionAccess; }
private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException, SQLException { if ( log.isTraceEnabled() ) { log.trace( "Deserializing " + getClass().getSimpleName() ); } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Step 1 :: read back non-transient state... ois.defaultReadObject(); sessionEventsManager = new SessionEventListenerManagerImpl(); // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Step 2 :: read back transient state... // -- see above factory = SessionFactoryImpl.deserialize( ois ); jdbcSessionContext = new JdbcSessionContextImpl( this, (StatementInspector) ois.readObject() ); jdbcCoordinator = JdbcCoordinatorImpl.deserialize( ois, this ); cacheTransactionSync = factory.getCache().getRegionFactory().createTransactionContext( this ); transactionCoordinator = factory.getServiceRegistry() .getService( TransactionCoordinatorBuilder.class ) .buildTransactionCoordinator( jdbcCoordinator, this ); entityNameResolver = new CoordinatingEntityNameResolver( factory, interceptor ); exceptionConverter = new ExceptionConverterImpl( this ); } }
@PostConstruct public void registerListener() { EventListenerRegistry registry = ((SessionFactoryImpl) sessionFactory).getServiceRegistry().getService( EventListenerRegistry.class); registry.getEventListenerGroup(EventType.POST_LOAD).appendListener(this); }
this.transactionCoordinator = factory.getServiceRegistry() .getService( TransactionCoordinatorBuilder.class ) .buildTransactionCoordinator( jdbcCoordinator, this );
Configuration configuration = new Configuration().configure(); SessionFactoryImpl sessionFactory = (SessionFactoryImpl) configuration.buildSessionFactory(); EventListenerRegistry listenerRegistry = sessionFactory.getServiceRegistry().getService(EventListenerRegistry.class); SolrIndexEventListener indexListener = new SolrIndexEventListener(); // a SaveOrUpdateEventListener i wanted to attach listenerRegistry.appendListeners(EventType.SAVE_UPDATE, indexListener);
private void errorIfResourceLocalDueToExplicitSynchronizationType() { // JPA requires that we throw IllegalStateException in cases where: // 1) the PersistenceUnitTransactionType (TransactionCoordinator) is non-JTA // 2) an explicit SynchronizationType is specified if ( !getServiceRegistry().getService( TransactionCoordinatorBuilder.class ).isJta() ) { throw new IllegalStateException( "Illegal attempt to specify a SynchronizationType when building an EntityManager from a " + "EntityManagerFactory defined as RESOURCE_LOCAL (as opposed to JTA)" ); } }
private <T> void register(EventType<T> eventType, T t) { EventListenerRegistry registry = ((SessionFactoryImpl) sessionFactory).getServiceRegistry().getService(EventListenerRegistry.class); log.info("Registering {} listener on {} events", t.getClass(), eventType); registry.getEventListenerGroup(eventType).appendListener(t); }
/** * 取得hibernate的connection对象 */ protected Connection getConnection() throws SQLException { if (sessionFactory instanceof SessionFactoryImpl) { SessionFactoryImpl sessionFactoryImpl = (SessionFactoryImpl) sessionFactory; ConnectionProvider provider = sessionFactoryImpl.getServiceRegistry().getService(ConnectionProvider.class); if(provider != null) return provider.getConnection(); } return null; }
/** * Provide a singleton instance of the hibernate session factory. * * @return A session factory. */ @Override public PooledDataSource get() { logger.trace("Extracting PooledDataSource from hibernate session " + "factory."); SessionFactoryServiceRegistryImpl src = (SessionFactoryServiceRegistryImpl) sessionFactory.getServiceRegistry(); ConnectionProvider cp = src.getService(ConnectionProvider.class); return cp.unwrap(PooledDataSource.class); }
private <T> EventListenerGroup<T> eventListenerGroup(EventType<T> type) { return factory.getServiceRegistry().getService( EventListenerRegistry.class ).getEventListenerGroup( type ); }
SessionFactoryImpl sessionFactory = (SessionFactoryImpl) ((EntityManagerFactoryImpl) emf).getSessionFactory(); EventListenerRegistry eventListenerRegistry = sessionFactory.getServiceRegistry().getService(EventListenerRegistry.class); CallbackRegistryImpl emptyRegistry= new CallbackRegistryImpl(); for ( EventType eventType : EventType.values() ) { final EventListenerGroup eventListenerGroup = eventListenerRegistry.getEventListenerGroup( eventType ); for ( Object listener : eventListenerGroup.listeners() ) { if ( CallbackRegistryConsumer.class.isInstance( listener ) ) { ( (CallbackRegistryConsumer) listener ).injectCallbackRegistry( emptyRegistry ); } } }
private <T> EventListenerGroup<T> eventListenerGroup(EventType<T> type) { return factory.getServiceRegistry().getService( EventListenerRegistry.class ).getEventListenerGroup( type ); }
@PostConstruct public void registerListeners() { if (entityManagerFactory instanceof HibernateEntityManagerFactory) { final HibernateEntityManagerFactory hibernateEntityManagerFactory = (HibernateEntityManagerFactory) entityManagerFactory; final SessionFactoryImpl sessionFactory = (SessionFactoryImpl) hibernateEntityManagerFactory.getSessionFactory(); final EventListenerRegistry registry = sessionFactory.getServiceRegistry() .getService(EventListenerRegistry.class); registry.getEventListenerGroup(EventType.PRE_INSERT) .appendListener(serviceInstanceIdEventListener); } } }
@Override public JdbcConnectionAccess getJdbcConnectionAccess() { if ( jdbcConnectionAccess == null ) { if ( MultiTenancyStrategy.NONE == factory.getSettings().getMultiTenancyStrategy() ) { jdbcConnectionAccess = new NonContextualJdbcConnectionAccess( factory.getServiceRegistry().getService( ConnectionProvider.class ) ); } else { jdbcConnectionAccess = new ContextualJdbcConnectionAccess( factory.getServiceRegistry().getService( MultiTenantConnectionProvider.class ) ); } } return jdbcConnectionAccess; }
@Override public JdbcConnectionAccess getJdbcConnectionAccess() { if ( jdbcConnectionAccess == null ) { if ( MultiTenancyStrategy.NONE == factory.getSettings().getMultiTenancyStrategy() ) { jdbcConnectionAccess = new NonContextualJdbcConnectionAccess( factory.getServiceRegistry().getService( ConnectionProvider.class ) ); } else { jdbcConnectionAccess = new ContextualJdbcConnectionAccess( factory.getServiceRegistry().getService( MultiTenantConnectionProvider.class ) ); } } return jdbcConnectionAccess; }
public TransactionEnvironmentImpl(SessionFactoryImpl sessionFactory) { this.sessionFactory = sessionFactory; this.statisticsImplementor = sessionFactory.getStatisticsImplementor(); this.serviceRegistry = sessionFactory.getServiceRegistry(); this.jdbcServices = serviceRegistry.getService( JdbcServices.class ); this.jtaPlatform = serviceRegistry.getService( JtaPlatform.class ); this.transactionFactory = serviceRegistry.getService( TransactionFactory.class ); }
/** * Provide a singleton instance of the hibernate session factory. * * @return A session factory. */ @Override public SessionFactory get() { logger.trace("Creating hibernate session factory."); // Build the service registry. SessionFactory factory = new MetadataSources(serviceRegistry) .buildMetadata() .buildSessionFactory(); // Register our event listeners. injectEventListeners(((SessionFactoryImpl) factory) .getServiceRegistry()); return factory; }
public TransactionEnvironmentImpl(SessionFactoryImpl sessionFactory) { this.sessionFactory = sessionFactory; this.statisticsImplementor = sessionFactory.getStatisticsImplementor(); this.serviceRegistry = sessionFactory.getServiceRegistry(); this.jdbcServices = serviceRegistry.getService( JdbcServices.class ); this.jtaPlatform = serviceRegistry.getService( JtaPlatform.class ); this.transactionFactory = serviceRegistry.getService( TransactionFactory.class ); }
/** * Builds the sessionFactory as configured so far. */ public FullTextSessionBuilder build() { final Configuration hibConfiguration = buildBaseConfiguration(); for ( Class<?> annotatedClass : annotatedClasses ) { hibConfiguration.addAnnotatedClass( annotatedClass ); } hibConfiguration.getProperties().putAll( cfg ); StandardServiceRegistry serviceRegistry = buildServiceRegistry( cfg ); SessionFactoryImpl sessionFactoryImpl = (SessionFactoryImpl) hibConfiguration.buildSessionFactory( serviceRegistry ); ServiceRegistryImplementor serviceRegistryImplementor = sessionFactoryImpl.getServiceRegistry(); EventListenerRegistry registry = serviceRegistryImplementor.getService( EventListenerRegistry.class ); for ( LoadEventListener listener : additionalLoadEventListeners ) { registry.getEventListenerGroup( EventType.LOAD ).appendListener( listener ); } sessionFactory = sessionFactoryImpl; return this; }