Last active
July 18, 2019 21:00
-
-
Save darbyluv2code/8ed3724aba5a1f26c6e77e7b9d34a32a to your computer and use it in GitHub Desktop.
How to set hbm2ddl No XML CONFIG
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package com.luv2code.springdemo.config; | |
| import java.beans.PropertyVetoException; | |
| import java.util.Properties; | |
| import java.util.logging.Logger; | |
| import javax.sql.DataSource; | |
| 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.orm.hibernate5.HibernateTransactionManager; | |
| import org.springframework.orm.hibernate5.LocalSessionFactoryBean; | |
| import org.springframework.transaction.annotation.EnableTransactionManagement; | |
| import org.springframework.web.servlet.config.annotation.EnableWebMvc; | |
| import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; | |
| import com.mchange.v2.c3p0.ComboPooledDataSource; | |
| @Configuration | |
| @EnableWebMvc | |
| @EnableTransactionManagement | |
| @ComponentScan("com.luv2code.springdemo") | |
| @PropertySource({ "classpath:persistence-mysql.properties" }) | |
| public class DemoAppConfig implements WebMvcConfigurer { | |
| @Autowired | |
| private Environment env; | |
| private Logger logger = Logger.getLogger(getClass().getName()); | |
| @Bean | |
| public DataSource myDataSource() { | |
| // create connection pool | |
| ComboPooledDataSource myDataSource = new ComboPooledDataSource(); | |
| // set the jdbc driver | |
| try { | |
| myDataSource.setDriverClass("com.mysql.jdbc.Driver"); | |
| } | |
| catch (PropertyVetoException exc) { | |
| throw new RuntimeException(exc); | |
| } | |
| // for sanity's sake, let's log url and user ... just to make sure we are reading the data | |
| logger.info("jdbc.url=" + env.getProperty("jdbc.url")); | |
| logger.info("jdbc.user=" + env.getProperty("jdbc.user")); | |
| // set database connection props | |
| myDataSource.setJdbcUrl(env.getProperty("jdbc.url")); | |
| myDataSource.setUser(env.getProperty("jdbc.user")); | |
| myDataSource.setPassword(env.getProperty("jdbc.password")); | |
| // set connection pool props | |
| myDataSource.setInitialPoolSize(getIntProperty("connection.pool.initialPoolSize")); | |
| myDataSource.setMinPoolSize(getIntProperty("connection.pool.minPoolSize")); | |
| myDataSource.setMaxPoolSize(getIntProperty("connection.pool.maxPoolSize")); | |
| myDataSource.setMaxIdleTime(getIntProperty("connection.pool.maxIdleTime")); | |
| return myDataSource; | |
| } | |
| private Properties getHibernateProperties() { | |
| // set hibernate properties | |
| Properties props = new Properties(); | |
| props.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect")); | |
| props.setProperty("hibernate.show_sql", env.getProperty("hibernate.show_sql")); | |
| props.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto")); | |
| return props; | |
| } | |
| // need a helper method | |
| // read environment property and convert to int | |
| private int getIntProperty(String propName) { | |
| String propVal = env.getProperty(propName); | |
| // now convert to int | |
| int intPropVal = Integer.parseInt(propVal); | |
| return intPropVal; | |
| } | |
| @Bean | |
| public LocalSessionFactoryBean sessionFactory(){ | |
| // create session factorys | |
| LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); | |
| // set the properties | |
| sessionFactory.setDataSource(myDataSource()); | |
| sessionFactory.setPackagesToScan(env.getProperty("hibernate.packagesToScan")); | |
| sessionFactory.setHibernateProperties(getHibernateProperties()); | |
| return sessionFactory; | |
| } | |
| @Bean | |
| @Autowired | |
| public HibernateTransactionManager transactionManager(SessionFactory sessionFactory) { | |
| // setup transaction manager based on session factory | |
| HibernateTransactionManager txManager = new HibernateTransactionManager(); | |
| txManager.setSessionFactory(sessionFactory); | |
| return txManager; | |
| } | |
| } | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # | |
| # JDBC connection properties | |
| # | |
| jdbc.driver=com.mysql.jdbc.Driver | |
| jdbc.url=jdbc:mysql://localhost:3306/web_customer_tracker?useSSL=false&serverTimezone=UTC | |
| jdbc.user=springstudent | |
| jdbc.password=springstudent | |
| # | |
| # Connection pool properties | |
| # | |
| connection.pool.initialPoolSize=5 | |
| connection.pool.minPoolSize=5 | |
| connection.pool.maxPoolSize=20 | |
| connection.pool.maxIdleTime=3000 | |
| # | |
| # Hibernate properties | |
| # | |
| hibernate.dialect=org.hibernate.dialect.MySQL5Dialect | |
| hibernate.show_sql=true | |
| hibernate.packagesToScan=com.luv2code.springdemo.entity | |
| hibernate.hbm2ddl.auto=create |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment