Helou
I'm trying to configure Hibernate for local development with HSQL Database, but i'm stuck on Spring not handling transactions at all.
Configuration of datasource,sessionFactory,etc...
package com.globesy.hcp.context.config;
import java.io.IOException;
import java.util.Properties;
import javax.sql.DataSource;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
import org.springframework.core.env.Environment;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.hibernate4.LocalSessionFactoryBuilder;
import org.springframework.orm.hibernate5.HibernateTransactionManager;
import org.springframework.transaction.interceptor.TransactionInterceptor;
import com.globesy.hcp.context.config.constants.BeanConstants;
import com.globesy.hcp.context.config.constants.PropertyConstants;
@Configuration
public class DataSourceConfig {
    private static final Logger LOGGER = LoggerFactory.getLogger(DataSourceConfig.class);
    @Autowired
    private Environment environment;
    @Bean(name=BeanConstants.SESSION_FACTORY_BEAN_NAME)
    @DependsOn(BeanConstants.DATASOURCE_BEAN_NAME)
    public SessionFactory sessionFactory(@Qualifier(BeanConstants.DATASOURCE_BEAN_NAME) DataSource dataSource) throws IOException {
        org.hibernate.cfg.Configuration hibernateConfig = new org.hibernate.cfg.Configuration()
                .addProperties(hibernateProperties());
        StandardServiceRegistry registry = new StandardServiceRegistryBuilder().applySettings(hibernateConfig.getProperties()).build();
        return new LocalSessionFactoryBuilder(dataSource)
                .scanPackages(PropertyConstants.HIBERNATE_PACKAGES_TO_SCAN)
                .setProperties(hibernateConfig.getProperties())
                .buildSessionFactory(registry);
     }
    @Bean(name=BeanConstants.DATASOURCE_BEAN_NAME)
    public DataSource dataSource(){
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(environment.getRequiredProperty(PropertyConstants.HIBERNATE_DRIVER_CLASS_NAME));
        dataSource.setUrl(environment.getRequiredProperty(PropertyConstants.HIBERNATE_URL));
        dataSource.setUsername(environment.getRequiredProperty(PropertyConstants.HIBERNATE_USERNAME));
        dataSource.setPassword(environment.getRequiredProperty(PropertyConstants.HIBERNATE_PASSWORD));
        LOGGER.info("DataSource initialized");
        return dataSource;
    }
    @Bean(name=BeanConstants.TRANSACTION_MANAGER)
    @DependsOn({BeanConstants.SESSION_FACTORY_BEAN_NAME,BeanConstants.DATASOURCE_BEAN_NAME})
    public HibernateTransactionManager transactionManager(@Qualifier(BeanConstants.SESSION_FACTORY_BEAN_NAME) SessionFactory sessionFactory,
                                                          @Qualifier(BeanConstants.DATASOURCE_BEAN_NAME) DataSource source) {
        HibernateTransactionManager manager = new HibernateTransactionManager(); 
        manager.setDataSource(source);
        manager.setSessionFactory(sessionFactory);
        manager.setEntityInterceptorBeanName(BeanConstants.TRANSACTION_INTERCEPTOR);
        manager.setRollbackOnCommitFailure(true);
        manager.afterPropertiesSet();
        LOGGER.info("HibernateTransactionManager initialized");
        return manager;
    }
    @Bean(name=BeanConstants.TRANSACTION_INTERCEPTOR)
    public TransactionInterceptor transactionInterceptor(){
        Properties props = new Properties();
        props.put("save", "PROPAGATION_REQUIRED");
        TransactionInterceptor interceptor = new TransactionInterceptor();
        interceptor.setTransactionAttributes(props);
        return interceptor;
    }
    private Properties hibernateProperties() {
            Properties properties = new Properties();
            properties.put(PropertyConstants.HIBERNATE_DIALECT, environment.getRequiredProperty(PropertyConstants.HIBERNATE_DIALECT));
            properties.put(PropertyConstants.HIBERNATE_DRIVER_CLASS_NAME, environment.getRequiredProperty(PropertyConstants.HIBERNATE_DRIVER_CLASS_NAME));
            properties.put(PropertyConstants.HIBERNATE_SHOW_SQL, environment.getRequiredProperty(PropertyConstants.HIBERNATE_SHOW_SQL));
            properties.put(PropertyConstants.HIBERNATE_URL, environment.getRequiredProperty(PropertyConstants.HIBERNATE_URL));
            properties.put(PropertyConstants.HIBERNATE_USERNAME, environment.getRequiredProperty(PropertyConstants.HIBERNATE_USERNAME));
            properties.put(PropertyConstants.HIBERNATE_PASSWORD, environment.getRequiredProperty(PropertyConstants.HIBERNATE_PASSWORD));
            properties.put(PropertyConstants.HIBERNATE_HBM2DLL_AUTO, environment.getRequiredProperty(PropertyConstants.HIBERNATE_HBM2DLL_AUTO));
            properties.put(PropertyConstants.HIBERNATE_DEFAULT_SCHEMA, environment.getRequiredProperty(PropertyConstants.HIBERNATE_DEFAULT_SCHEMA));
            return properties;        
    }
}
Property file with hibernate configuration for local environment
#hibernate config
hibernate.connection.driverClassName=org.hsqldb.jdbcDriver
hibernate.connection.url=jdbc:hsqldb:hsql://localhost:9001/hcp_demo
hibernate.default_schema=public
hibernate.connection.username=sa
hibernate.connection.password=
hibernate.dialect=org.hibernate.dialect.HSQLDialect
hibernate.show_sql=true
hibernate.hbm2dll.auto=update
Invocation point of code that throws Exception
@RestController
public class VerifyController {
    @Autowired
    private PersonDao personDao;
    private static final Logger LOGGER = LoggerFactory.getLogger(VerifyController.class);
    @PostConstruct
    @Transactional
    public void init(){
        Person person = new Person();
        person.setFirstName("Jozef");
        person.setSurname("Novak");
        personDao.saveOrUpdate(person);
    }
...
Stacktrace printed after calling personDao.saveOrUpdate()
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'verifyController': Invocation of init method failed; nested exception is org.hibernate.HibernateException: No CurrentSessionContext configured!
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:136)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:408)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538)
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:444)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:326)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5066)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5584)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1572)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1562)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.hibernate.HibernateException: No CurrentSessionContext configured!
    at org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:685)
    at com.globesy.hcp.dao.AbstractDao.getSession(AbstractDao.java:13)
    at com.globesy.hcp.dao.AbstractDao.saveOrUpdate(AbstractDao.java:25)
    at com.globesy.hcp.controller.VerifyController.init(VerifyController.java:34)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:354)
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:305)
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:133)
    ... 23 more
What i've allready tried
- Switching between HibernateTransactionManager/DatasourceTransactionManager
 - Property - hibernate.current_session_context_class with values (managed,thread)
 - And many other small configuration changes
 
I hope you guys have some knowledge what can posibly be wrong with this configuration, because myself and Google haven't.