Advertisement
Guest User

Untitled

a guest
Jan 20th, 2016
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.51 KB | None | 0 0
  1. package com.stackoverflow;
  2. import java.io.File;
  3. import java.io.FileWriter;
  4. import java.io.InputStream;
  5. import java.net.URL;
  6. import java.util.Set;
  7. import javax.persistence.Entity;
  8. import org.apache.commons.io.IOUtils;
  9. import org.hibernate.cfg.Configuration;
  10. import org.hibernate.cfg.Environment;
  11. import org.hibernate.connection.DriverManagerConnectionProvider;
  12. import org.hibernate.dialect.PostgreSQLDialect;
  13. import org.hibernate.tool.hbm2ddl.SchemaExport;
  14. import org.scannotation.AnnotationDB;
  15.  
  16. public class ExportShema {
  17.  
  18. private static final String OUTPUT_SQL_FILE = "target/database.sql";
  19. private static final String INIT_FILE = "init.sql";
  20. private static final String DB_URL = "jdbc:h2:mem:test;DB_CLOSE_DELAY=-1";
  21. private static final String DB_USERNAME = "sa";
  22. private static final String DB_PASSWORD = "";
  23. private static final File HBM_DIRECTORY = new File("src/main/resources/com/stackoverflow/domain/");
  24.  
  25. public static void main(final String[] args) throws Exception {
  26. final Configuration cfg = new Configuration();
  27. cfg.setProperty(Environment.CONNECTION_PROVIDER, DriverManagerConnectionProvider.class.getName());
  28. //for postgrest schema
  29. cfg.setProperty(Environment.DIALECT, PostgreSQLDialect.class.getName());
  30. cfg.setProperty(Environment.URL, DB_URL);
  31. cfg.setProperty(Environment.USER, DB_USERNAME);
  32. cfg.setProperty(Environment.PASS, DB_PASSWORD);
  33.  
  34. //If you have HBM + annotated class
  35. cfg.addDirectory(HBM_DIRECTORY);
  36.  
  37. final AnnotationDB db = new AnnotationDB();
  38. db.scanArchives(new URL("file:target/classes/"));
  39. final Set<String> clazzNames = db.getAnnotationIndex().get(Entity.class.getName());
  40. for (final String clazzName : clazzNames) {
  41. cfg.addAnnotatedClass(Class.forName(clazzName));
  42. }
  43.  
  44. final SchemaExport exporter = new SchemaExport(cfg);
  45. exporter.setOutputFile(OUTPUT_SQL_FILE);
  46. exporter.setDelimiter(";");
  47. exporter.setFormat(true);
  48. exporter.create(false, true);
  49.  
  50. try (final InputStream init_file = ExportShema.class.getResourceAsStream(INIT_FILE)) {
  51. if (init_file != null) {
  52. final File output = new File(OUTPUT_SQL_FILE);
  53. try (final FileWriter fw = new FileWriter(output, true)) {
  54. final String eol = System.getProperty("line.separator");
  55. fw.append(eol + eol);
  56. fw.append(IOUtils.toString(init_file));
  57. }
  58. }
  59. }
  60. }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement