1 16 17 package info.jtrac.hibernate; 18 19 import java.sql.Connection ; 20 import java.sql.Statement ; 21 import javax.sql.DataSource ; 22 import org.apache.commons.logging.Log; 23 import org.apache.commons.logging.LogFactory; 24 import org.hibernate.cfg.Configuration; 25 import org.hibernate.tool.hbm2ddl.SchemaUpdate; 26 27 32 public class SchemaHelper { 33 34 private String driverClassName; 35 private String url; 36 private String username; 37 private String password; 38 private String hibernateDialect; 39 private String [] mappingResources; 40 41 private DataSource dataSource; 42 43 private final Log logger = LogFactory.getLog(SchemaHelper.class); 44 45 public void setDataSource(DataSource dataSource) { 46 this.dataSource = dataSource; 47 } 48 49 public void setDriverClassName(String driverClassName) { 50 this.driverClassName = driverClassName; 51 } 52 53 public void setHibernateDialect(String hibernateDialect) { 54 this.hibernateDialect = hibernateDialect; 55 } 56 57 public void setMappingResources(String [] mappingResources) { 58 this.mappingResources = mappingResources; 59 } 60 61 public void setUrl(String url) { 62 this.url = url; 63 } 64 65 public void setUsername(String username) { 66 this.username = username; 67 } 68 69 public void setPassword(String password) { 70 this.password = password; 71 } 72 73 76 public void createSchema() { 77 Configuration cfg = new Configuration(); 78 cfg.setProperty("hibernate.connection.driver_class", driverClassName); 79 cfg.setProperty("hibernate.connection.url", url); 80 cfg.setProperty("hibernate.connection.username", username); 81 cfg.setProperty("hibernate.connection.password", password); 82 cfg.setProperty("hibernate.dialect", hibernateDialect); 83 for (String resource : mappingResources) { 84 cfg.addResource(resource); 85 } 86 new SchemaUpdate(cfg).execute(true, true); 87 } 88 89 92 public void stopEmbeddedDb() throws Exception { 93 if (url.startsWith("jdbc:hsqldb:file")) { 94 logger.info("attempting to shutdown embedded HSQLDB database"); 95 Connection con = dataSource.getConnection(); 96 Statement stmt = con.createStatement(); 97 stmt.executeUpdate("SHUTDOWN"); 98 stmt.close(); 99 con.close(); 100 logger.info("embedded HSQLDB database stopped successfully"); 101 } 102 } 103 104 } 105 | Popular Tags |