2014-01-12 5 views
12

JavaEE 동면 프로젝트Hibernate 자동 데이터베이스 생성

그리고 MySQL을 데이터베이스로 사용하고 있습니다.

프로젝트를 처음 실행할 때 자동으로 데이터베이스가 생성되기를 원합니다.

이것은 내 hibernate.cnf.xml : 나는 데이터베이스 InternetProject가 생성 될 수있는 방법을

내가 처음으로 다른 컴퓨터에서이 프로젝트를 실행
<?xml version='1.0' encoding='utf-8' ?> 

<!DOCTYPE hibernate-configuration PUBLIC 
     "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
     "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd" > 

<hibernate-configuration> 
    <session-factory> 
     <property name="connection.driver_class">com.mysql.jdbc.Driver</property> 
     <property name="connection.url">jdbc:mysql://localhost/InternetProject</property> 
     <property name="connection.username">root</property> 
     <property name="connection.password"></property> 
     <property name="connection.pool_size">10</property> 
     <property name="dialect">org.hibernate.dialect.MySQLDialect</property> 
     <property name="hibernate.hbm2ddl.auto">update</property> 
     <property name="show_sql">true</property> 
     <mapping class="entities.Business" /> 
     <mapping class="entities.Coupon" /> 
     <mapping class="entities.User" /> 
     <mapping class="entities.LastLogin" /> 
    </session-factory> 
</hibernate-configuration> 

?

설정 파일에 따르면, 이미 그것을 할 수 있으며 내가 그것을 잘 모르는 것 같아요 .. 감사합니다 사전에 :)

답변

9
<property name="hibernate.hbm2ddl.auto">create</property> 

+1

감사합니다. 이것과' 업데이트'의 차이점은 언제입니까? – Billie

+2

create는 새 스키마를 만들고 업데이트는 스키마를 찾고 업데이트를 수행합니다 – tesnik03

+1

'udpate' 대신'create'를 사용할 수 있습니까, 아니면 둘 다 사용해야합니까? – Billie

5

는 여러 옵션이있다 할 것입니다 자동 속성.

  1. create - 매핑 또는 주석에 해당하는 새 테이블을 만듭니다. 기존 테이블과 데이터를 삭제합니다.
  2. 업데이트 - 기존 데이터와 테이블을 유지합니다. 스키마를 업데이트합니다. 여기서 우리는 양치질 약을 다루어야합니다.
  3. create-drop - create와 같지만 세션이 닫히면 모든 것이 삭제됩니다.
  4. 유효성 검사 - 스키마를지도 또는 주석으로 유효성을 검사하거나 일치시킵니다. 프로덕션 환경에 유효합니다.

    <!-- create create-drop validate update --> 
    <property name="hbm2ddl.auto">update</property> 
    

는 나는 그것이 도움이되기를 바랍니다.

23

<property name="hibernate.hbm2ddl.auto">create</property> 은 표를 만듭니다. 그러나 데이터베이스를 만들지는 않습니다. 연결 URL을 변경하여 데이터베이스를 생성하십시오.

<property name="connection.driver_class">com.mysql.jdbc.Driver</property> 
    <property name="connection.url">jdbc:mysql://localhost/InternetProject?createDatabaseIfNotExist=true</property> 
    <property name="connection.username">root</property> 
    <property name="connection.password"></property> 
    <property name="connection.pool_size">10</property> 
+0

'password'속성에 값을 입력하면 자동으로 설정되어 사용됩니까? –

+1

예. 최대 절전 모드가 자동으로 수행됩니다. –

5

Hibernate는 당신을 위해 단지 테이블을 데이터베이스를 작성하지 않습니다. 데이터베이스를 만들려면 URL에 매개 변수를 추가하여 이미 존재하지 않는다면 MySQL에 데이터베이스를 생성하도록 지시해야합니다. 예 :

jdbc:mysql://db:3306/mydatabase?createDatabaseIfNotExist=true 
+0

정말이 솔루션이 마음에 들지만 나에게는 도움이되지 않습니다. 나는'com.mysql.cj.jdbc.exceptions.CommunicationsException : 통신 링크 실패'를 얻는다. – codepleb

관련 문제