Java tutorial
/* * The MIT License * * Copyright 2014 Anton, Carl, John, Peter. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package edu.chalmers.dat076.moviefinder.config; import java.util.Properties; import javax.sql.DataSource; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; import org.springframework.orm.jpa.vendor.Database; import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; /** * * @author Peter * This class sets up the database data source and various other things related * to the database. See https://github.com/spring-projects/spring-data-book/blob/master/jpa/src/main/java/com/oreilly/springdata/jpa/InfrastructureConfig.java * and http://docs.spring.io/spring-data/jpa/docs/1.7.0.RELEASE/reference/html/#jpa.java-config */ @Configuration @EnableJpaRepositories(basePackages = "edu.chalmers.dat076.moviefinder.persistence") @EnableTransactionManagement public class RepositoryConfig { @Value("${jdbc.driverClassName}") private String jdbcDriverClassName; @Value("${jdbc.url}") private String jdbcUrl; @Value("${jdbc.username}") private String jdbcUsername; @Value("${jdbc.password}") private String jdbcPassword; @Value("${hibernate.dialect}") private String hibernateDialect; @Value("${hibernate.hbm2ddl.auto}") private String hibernateHbm2ddlAuto; @Value("${hibernate.show_sql}") private String hibernateShowSql; @Value("${hibernate.format_sql}") private String hibernateFormatSql; @Value("${hibernate.use_sql_comments}") private String hibernateUseSqlComments; @Bean public DataSource dataSource() { DriverManagerDataSource ds = new DriverManagerDataSource(); ds.setDriverClassName(jdbcDriverClassName); ds.setUrl(jdbcUrl); ds.setUsername(jdbcUsername); ds.setPassword(jdbcPassword); return ds; } @Bean public LocalContainerEntityManagerFactoryBean entityManagerFactory() { HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); vendorAdapter.setDatabase(Database.DERBY); vendorAdapter.setGenerateDdl(true); Properties jpaProperties = new Properties(); jpaProperties.setProperty("hibernate.dialect", hibernateDialect); jpaProperties.setProperty("hibernate.hbm2ddl.auto", hibernateHbm2ddlAuto); jpaProperties.setProperty("hibernate.show_sql", hibernateShowSql); jpaProperties.setProperty("hibernate.format_sql", hibernateFormatSql); jpaProperties.setProperty("hibernate.use_sql_comments", hibernateUseSqlComments); LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean(); factory.setJpaVendorAdapter(vendorAdapter); factory.setPackagesToScan("edu.chalmers.dat076.moviefinder.persistence"); factory.setDataSource(dataSource()); factory.setJpaProperties(jpaProperties); return factory; } @Bean public PlatformTransactionManager transactionManager() { JpaTransactionManager txManager = new JpaTransactionManager(); txManager.setEntityManagerFactory(entityManagerFactory().getObject()); return txManager; } }