사용자 도구

사이트 도구


java:jpa:schema_generation

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
java:jpa:schema_generation [2012/08/19 12:23]
kwon37xi [Java 코드를 통한 DDL 생성]
java:jpa:schema_generation [2015/09/20 13:41] (현재)
kwon37xi [읽어보기]
줄 3: 줄 3:
   * ''$CLASSPATH/META-INF/persistence.xml'' 파일이 존재한다고 가정한다.   * ''$CLASSPATH/META-INF/persistence.xml'' 파일이 존재한다고 가정한다.
   * persistence.xml에 **hibernate.dialect** 가 잘 정의돼 있어야 한다.   * persistence.xml에 **hibernate.dialect** 가 잘 정의돼 있어야 한다.
 +  * ''No appropriate connection provider encountered'' 에러가 발생하는 것은 Persistence Unit 속성에 ''hibernate.hbm2ddl.auto''이 지정돼 있기 때문이다. 이를 뺄 것.
 +
 +===== Gradle =====
 +  * [[http://divinespear.github.io/jpa-schema-gradle-plugin/|jpa-schema-gradle-plugin]]
 +
 +===== JPA 2.1 =====
 +  * [[http://docs.oracle.com/javaee/7/api/javax/persistence/Persistence.html#generateSchema%28java.lang.String,%20java.util.Map%29|javax.persistence.Persistence.generateSchema]]
 +
  
 ===== Java 코드를 통한 DDL 생성 ===== ===== Java 코드를 통한 DDL 생성 =====
 +  * [[http://stackoverflow.com/questions/3393092/schema-export-with-hibernate-annotations|java - Schema export with hibernate annotations - Stack Overflow]]
 <code java> <code java>
 import java.util.HashMap; import java.util.HashMap;
줄 13: 줄 22:
 public class JPASchemaExport { public class JPASchemaExport {
  public static void main(String[] args) {  public static void main(String[] args) {
 + String persistenceUnitName = args[0];
 + String outputFile = args[1];
 +
  Ejb3Configuration cfg = new Ejb3Configuration();  Ejb3Configuration cfg = new Ejb3Configuration();
  HashMap<String, String> props = new HashMap<String, String>();  HashMap<String, String> props = new HashMap<String, String>();
- props.put("hibernate.format_sql", "true"); + Ejb3Configuration configured = cfg.configure(persistenceUnitName, props);
- Ejb3Configuration configured = cfg.configure("퍼시스턴스유닛이름", props);+
  SchemaExport se = new SchemaExport(configured.getHibernateConfiguration());  SchemaExport se = new SchemaExport(configured.getHibernateConfiguration());
 + se.setOutputFile(outputFile);
 + se.setFormat(true|false);
  se.setDelimiter(";");  se.setDelimiter(";");
  se.create(true, false);  se.create(true, false);
줄 24: 줄 37:
 </code> </code>
  
-* [[java.dzone.com/articles/how-generate-schema-creation|How Generate Schema Creation]] 같은 예제도 있었네.+  * [[http://java.dzone.com/articles/how-generate-schema-creation|How Generate Schema Creation]] 같은 예제도 있었네.
 ===== Maven Hibernate3 플러그인을 통한 생성 ===== ===== Maven Hibernate3 플러그인을 통한 생성 =====
   * 2012년 1월 현재 Maven Hibernate3 2.2 플러그인은 의존성(dependency) 문제가 많다. 그래서 플러그인에 대한 의존성을 따로 명시해 주어야만 한다. 안그러면 다음과 같은 오류를 만나게 되며, core의 의존성을 해결하더라도 xerces, validator등의 의존성까지도 명시하지 않으면 계속해서 다른 오류가 발생한다.<code>   * 2012년 1월 현재 Maven Hibernate3 2.2 플러그인은 의존성(dependency) 문제가 많다. 그래서 플러그인에 대한 의존성을 따로 명시해 주어야만 한다. 안그러면 다음과 같은 오류를 만나게 되며, core의 의존성을 해결하더라도 xerces, validator등의 의존성까지도 명시하지 않으면 계속해서 다른 오류가 발생한다.<code>
줄 84: 줄 97:
   * **''<implementation>jpaconfiguration</implementation>''** 이 부분의 값을 ''annotationconfiguration''으로 변경하면 JPA가 아닌 Hibernate Annotation API로 간주하게 바뀐다.   * **''<implementation>jpaconfiguration</implementation>''** 이 부분의 값을 ''annotationconfiguration''으로 변경하면 JPA가 아닌 Hibernate Annotation API로 간주하게 바뀐다.
   * **''<export>false</export>''**의 값이 true이면 Database에 대고 DDL 명령을 실행하려들게 되므로 주의!   * **''<export>false</export>''**의 값이 true이면 Database에 대고 DDL 명령을 실행하려들게 되므로 주의!
 +
 +===== 읽어보기 =====
 +  * [[http://jandrewthompson.blogspot.kr/2009/10/how-to-generate-ddl-scripts-from.html|Andrew Thompson's Blog: How To Generate DDL Scripts from Hibernate]]
 +  * [[http://stackoverflow.com/questions/3393092/schema-export-with-hibernate-annotations|java - Schema export with hibernate annotations - Stack Overflow]]
 +  * [[http://www.thoughts-on-java.org/standardized-schema-generation-data-loading-jpa-2-1/|Standardized schema generation and data loading with JPA 2.1]]
java/jpa/schema_generation.1345346622.txt.gz · 마지막으로 수정됨: 2012/08/19 12:23 저자 kwon37xi