Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package org.beast.project.template.config; import java.util.Properties; import javax.sql.DataSource; import org.apache.commons.dbcp2.BasicDataSource; import org.hibernate.SessionFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.core.env.Environment; import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor; import org.springframework.orm.hibernate4.HibernateTransactionManager; import org.springframework.orm.hibernate4.LocalSessionFactoryBean; import org.springframework.transaction.annotation.EnableTransactionManagement; /** * * @author u329022 */ @Configuration @EnableTransactionManagement @PropertySource({ "classpath:persistence.properties" }) @ComponentScan({ "org.beast.project" }) public class HibernateConfig extends DBConfig { @Autowired private Environment env; @Bean(initMethod = "setup", destroyMethod = "cleanup") @Override public DataSource dataSource() { /* EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder(); DataSource ds = builder.setType(EmbeddedDatabaseType.HSQL).build(); return ds;*/ BasicDataSource basicDataSource = new BasicDataSource(); basicDataSource.setDriverClassName(org.hsqldb.jdbcDriver.class.getName()); basicDataSource.setUsername("sa"); basicDataSource.setPassword(""); basicDataSource.setUrl("jdbc:hsqldb:mem:mydb"); return basicDataSource; } @Bean public LocalSessionFactoryBean sessionFactory() { LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); sessionFactory.setDataSource(dataSource()); sessionFactory.setPackagesToScan(new String[] { "org.beast.project.template.hibernate.entities" }); sessionFactory.setHibernateProperties(hibernateProperties()); return sessionFactory; } @Bean @Autowired public HibernateTransactionManager transactionManager(SessionFactory sessionFactory) { HibernateTransactionManager txManager = new HibernateTransactionManager(); txManager.setSessionFactory(sessionFactory); return txManager; } @Bean public PersistenceExceptionTranslationPostProcessor exceptionTranslation() { return new PersistenceExceptionTranslationPostProcessor(); } Properties hibernateProperties() { return new Properties() { { setProperty("hibernate.hbm2ddl.auto", "update"); setProperty("hibernate.dialect", "org.hibernate.dialect.HSQLDialect"); setProperty("hibernate.connection.autocommit", "true"); setProperty("hibernate.show_sql", "true"); } }; } }