in grails-plugin/src/main/groovy/grails/orm/bootstrap/HibernateDatastoreSpringInitializer.groovy [137:199]
public Closure getBeanDefinitions(BeanDefinitionRegistry beanDefinitionRegistry) {
ApplicationEventPublisher eventPublisher = super.findEventPublisher(beanDefinitionRegistry)
Closure beanDefinitions = {
def common = getCommonConfiguration(beanDefinitionRegistry, "hibernate")
common.delegate = delegate
common.call()
// for unwrapping / inspecting proxies
hibernateProxyHandler(HibernateProxyHandler)
def config = this.configuration
final boolean isGrailsPresent = isGrailsPresent()
dataSourceConnectionSourceFactory(CachedDataSourceConnectionSourceFactory)
hibernateConnectionSourceFactory(HibernateConnectionSourceFactory, persistentClasses as Class[]) { bean ->
bean.autowire = true
dataSourceConnectionSourceFactory = ref('dataSourceConnectionSourceFactory')
}
hibernateDatastore(HibernateDatastore, config, hibernateConnectionSourceFactory, eventPublisher) { bean->
bean.primary = true
}
sessionFactory(hibernateDatastore:'getSessionFactory') { bean->
bean.primary = true
}
transactionManager(hibernateDatastore:"getTransactionManager") { bean->
bean.primary = true
}
autoTimestampEventListener(hibernateDatastore:"getAutoTimestampEventListener")
getBeanDefinition("transactionManager").beanClass = PlatformTransactionManager
hibernateDatastoreConnectionSourcesRegistrar(HibernateDatastoreConnectionSourcesRegistrar, dataSources)
// domain model mapping context, used for configuration
grailsDomainClassMappingContext(hibernateDatastore:"getMappingContext")
loadDataServices(null)
.each {serviceName, serviceClass->
"$serviceName"(DatastoreServiceMethodInvokingFactoryBean, serviceClass) {
targetObject = ref("hibernateDatastore")
targetMethod = 'getService'
arguments = [serviceClass]
}
}
if(isGrailsPresent) {
if(ClassUtils.isPresent("org.grails.plugin.hibernate.support.AggregatePersistenceContextInterceptor")) {
ClassLoader cl = ClassUtils.getClassLoader()
persistenceInterceptor(cl.loadClass("org.grails.plugin.hibernate.support.AggregatePersistenceContextInterceptor"), ref("hibernateDatastore"))
proxyHandler(cl.loadClass("org.grails.datastore.gorm.proxy.ProxyHandlerAdapter"), ref('hibernateProxyHandler'))
}
boolean osivEnabled = config.getProperty("hibernate.osiv.enabled", Boolean, true)
boolean isWebApplication = beanDefinitionRegistry?.containsBeanDefinition("dispatcherServlet") ||
beanDefinitionRegistry?.containsBeanDefinition("grailsControllerHelper")
if (isWebApplication && osivEnabled && ClassUtils.isPresent("org.grails.plugin.hibernate.support.GrailsOpenSessionInViewInterceptor")) {
ClassLoader cl = ClassUtils.getClassLoader()
openSessionInViewInterceptor(cl.loadClass("org.grails.plugin.hibernate.support.GrailsOpenSessionInViewInterceptor")) {
hibernateDatastore = ref("hibernateDatastore")
}
}
}
}
return beanDefinitions
}