import org.codehaus.groovy.grails.commons.ApplicationHolder as AH import org.codehaus.groovy.grails.orm.hibernate.events.PatchedDefaultFlushEventListener import org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor import org.springframework.jdbc.support.lob.OracleLobHandler import org.springframework.jdbc.support.lob.DefaultLobHandler import com.burtbeckwith.grails.delayds.DelayedSessionFactoryBean import com.burtbeckwith.grails.delayds.DelayedDataSource beans = { dataSource(DelayedDataSource) // non-Oracle version lobHandlerDetector(DefaultLobHandler) // Oracle version /* lobHandlerDetector(OracleLobHandler) { nativeJdbcExtractor = new CommonsDbcpNativeJdbcExtractor() } */ // 1.2 version sessionFactory(DelayedSessionFactoryBean) { def application = AH.application def ds = application.config.dataSource def hibConfig = application.config.hibernate dataSource = ref('dataSource') List hibConfigLocations = [] if (application.classLoader.getResource('hibernate.cfg.xml')) { hibConfigLocations << 'classpath:hibernate.cfg.xml' } def explicitLocations = hibConfig?.config?.location if (explicitLocations) { if (explicitLocations instanceof Collection) { hibConfigLocations.addAll(explicitLocations.collect { it.toString() }) } else { hibConfigLocations << hibConfig.config.location.toString() } } configLocations = hibConfigLocations if (ds.configClass) { configClass = ds.configClass } hibernateProperties = ref('hibernateProperties') grailsApplication = ref('grailsApplication', true) lobHandler = ref('lobHandlerDetector') entityInterceptor = ref('entityInterceptor') eventListeners = ['flush': new PatchedDefaultFlushEventListener(), 'pre-load': ref('eventTriggeringInterceptor'), 'post-load': ref('eventTriggeringInterceptor'), 'save': ref('eventTriggeringInterceptor'), 'save-update': ref('eventTriggeringInterceptor'), 'post-insert': ref('eventTriggeringInterceptor'), 'pre-update': ref('eventTriggeringInterceptor'), 'post-update': ref('eventTriggeringInterceptor'), 'pre-delete': ref('eventTriggeringInterceptor'), 'post-delete': ref('eventTriggeringInterceptor')] } // 1.1 version /* sessionFactory(DelayedSessionFactoryBean) { def application = AH.application def ds = application.config.dataSource dataSource = ref('dataSource') if (application.classLoader.getResource('hibernate.cfg.xml')) { configLocation = 'classpath:hibernate.cfg.xml' } if (ds.configClass) { configClass = ds.configClass } hibernateProperties = ref('hibernateProperties') grailsApplication = ref('grailsApplication', true) lobHandler = ref('lobHandlerDetector') eventListeners = ['pre-load': ref('eventTriggeringInterceptor'), 'post-load': ref('eventTriggeringInterceptor'), 'save': ref('eventTriggeringInterceptor'), 'save-update': ref('eventTriggeringInterceptor'), 'post-insert': ref('eventTriggeringInterceptor'), 'pre-update': ref('eventTriggeringInterceptor'), 'post-update': ref('eventTriggeringInterceptor'), 'pre-delete': ref('eventTriggeringInterceptor'), 'post-delete': ref('eventTriggeringInterceptor')] } */ }