는 다음과 같은 사소한 클래스를 가정 자바 코드에서 시작Hibernate는 다음 DB 레이아웃
package Sample;
public class Status {
private Long id;
private String status;
public Status() {}
public Status(String status) {
this.status = status;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
을 나는 Status.hbm.xml
에서 최대 절전 모드 매핑을 정의한이 클래스.
이 파일은 클래스를 테이블에 매핑하는 방법을 최대 절전 모드로 설명합니다.
hibernate.cfg
에서 내 데이터베이스 (MySQL)에 연결하는 방법을 정의했습니다. 나는 데이터베이스에 Status
의 객체를 저장하기 위해 org.hibernate.Session
를 사용하려고하면 연결 할 데이터베이스가 없다는 것이 불만이 구성
:
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.username">root</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<mapping resource="sample/Status.hbm.xml"/>
</session-factory>
</hibernate-configuration>
은 내가 undertand에하지 않는 것은 다음과 같다.
(842) [주] 오류 org.hibernate.util.JDBCExceptionReporter - 없음 데이터베이스를 선택하지
나는의 URL 연결 문자열의 일부로 기존 데이터베이스를 추가하는 경우 hibernate.cfg.xml
즉
<property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/test</property>
test.status
테이블이 존재하지 않는 다른 오류가 발생합니다.
나는 Hibernate가 그것을 만들 것이라고 기대하고 있었다.
코드는 내가 할 경우에만 succesfull입니다 :
SchemaExport schemaExport = new SchemaExport(cfg);
schemaExport.create(false, true);
그래서 제 질문은
, 최대 절전 모드를 사용하고 스키마와 데이터베이스와 자바부터의 테이블을 만들 수있는 적절한 방법이 무엇인지.예를 들어 MySQL 클라이언트에서 MySQL 데이터베이스를 수동으로 생성하고 싶지 않습니다.
올바른 방법으로
SchemaExport
위의 접근 방식이 있습니까?
Java DB 디자인에서 시작하기에 가장 좋은 옵션은 무엇입니까?
하이버 네이트가 모든 재배포시 DB를 생성하면 데이터를 지울 것임을 이해합니다. 프로덕션으로 응용 프로그램을 가져 가고 싶다면, 최대 절전 모드로 스키마 및 테이블을 생성하고 그 시점부터 응용 프로그램은 Hibernate 생성 스키마 (한 번만 수행됨)를 사용합니다. 그것은 불가능합니까? 또한'ALTER' 스크립트는 DB 수준입니까? 어떻게 든 Hibernate에 의해 완료되지 않습니까? – Cratylus
내 응용 프로그램 데이터베이스의 첫 번째 버전을 얻는 가장 좋은 방법은 최대 절전 모드에서 생성 한 다음 원하는 방식으로 스키마를 수정하는 것입니다.여기에는 기본값 대신 InnoDB를 사용하도록 테이블을 설정하고 적절한 외래 키를 추가하는 것과 같은 것들이 포함된다. (어느 것도 Hibernate가 기본적으로하지 않는다.) 그런 다음이 편집 된 스키마를 내 보내어 프로덕션 용 내 스키마로 사용합니다. 일반적으로, Hibernate는 그것이 설계된 것이 아니기 때문에 스키마를 조작하지 않아야한다. ORM이 의미하는 바를 수행하게하고, 이는 데이터베이스와 코드 객체 간의 매핑입니다. – cdeszaq