내 프로젝트에서 나는 종종 데이터베이스에 JPA/Hibernate 스택을 사용한다.JPA/Hibernate : 데이터베이스 스키마 생성 및 첫 번째 실행시 데이터 가져 오기, 후속 실행시 스키마 업데이트
persistence.xml
을 정의 할 때 몇 가지 옵션이 있습니다. hibernate.hbm2ddl.auto
을 설정할 수 있습니다. create
으로 설정하면 모든 응용 프로그램 실행시 테이블이 다시 생성됩니다 (영구 데이터는 물론 손실됩니다). hibernate.hbm2ddl.import_files
으로 db fixture를 설정하여 초기 데이터를 가져올 수도 있습니다. update
으로 설정하면 새 엔티티에 대한 테이블 만 생성됩니다 (기존 테이블의 지속 된 데이터는 보존됩니다). 설정 hibernate.hbm2ddl.auto
처럼 행동 - (데이터베이스에는 테이블이없는 경우)
- :
것은 개발하고이 같은 행동을하고자하는 동안이 그 편리되지 않는 것입니다
hibernate.hbm2ddl.auto
이update
(예 : 새 엔티티에 대한 새 테이블 생성, 이전 엔티티에 대한 테이블/데이터 남기기)으로 설정되어있는 경우 -create
(엔티티 기반 테이블 생성) 및 - 을 가져옵니다.
이런 식으로 구현할 수 있습니까?
내 일반적인 스택에 대한 추가 정보 : Tomacat에서 실행되는 스프링 웹 응용 프로그램은 데이터베이스가 MySql이고 데이터베이스 액세스를 위해 JPA/Hibernate입니다.
내 persistence.xml
보통은
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="persistenceUnit" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
<!-- value="create" to build a new database on each run; value="update" to modify an existing database; value="create-drop" means the same as "create" but also drops tables when Hibernate closes; value="validate" makes no changes to the database -->
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy"/>
<property name="hibernate.connection.charSet" value="UTF-8"/>
<property name="hibernate.hbm2ddl.import_files" value="/META-INF/spring/import.sql"/>
</properties>
</persistence-unit>
</persistence>
당신이 내 응용 프로그램 구성/구조에 대한 다른 정보를 필요로하는 경우, 의견을 주시기 바랍니다.
감사합니다. 혼란 스럽긴하지만,'update'만으로는 충분하지 않습니다. 데이터베이스 생성에 대한 초기 데이터를 가져 오려고합니다. 나는 보통 초기 db fixture를 지정하기 위해'hibernate.hbm2ddl.import_files' 속성을 사용하지만이 접근법은'create' 또는'create-drop'으로 설정된'hibernate.hbm2ddl.auto'에서만 작동합니다. 이를 반영하기 위해 내 소식을 업데이트하겠습니다. –