DDL 생성 및 일반 persistence.xml 설정(OpenJPA)
-
12-12-2019 - |
문제
요약
나는 실행하려고 Java 웹 응용 프로그램 JPA2.0 예입니다.이 예 응용 프로그램 실행하도록 작성되었에 Glassfish
, 를 사용하여, EclipseLink
로 JPA 공급자입니다.고 싶으로 변환하에서 실행 TomEE
가 OpenJPA
로 JPA 공급자 수는 없지만 어떤 상세한 튜토리얼을 얻기를 위한 실행 OpenJPA
.
문제
나는 데 문제가로 변환하 persistence.xml
과 작업 OpenJPA
대 EclipseLink
.특히,주어진 persistence.xml
을 지정하지 않:
Entity
클래스입니다.이러한 필요?- 원하는 JPA 공급자입니다.니다 컨테이너의 기본을 뭔가?
- 은 JDBC 드라이버입니다.지정하려면 어떻게 해야 합는"메모리에서"DB(초기 테스트용)?
도:
- 는 방법은 DDL 생성 속성을 표현 OpenJPA?나는 할 수 없습니다 그들을 찾으십 OpenJPA 사용자 가이드.
상세정보
아래에 EclipseLink persistence.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="order" transaction-type="JTA">
<jta-data-source>jdbc/__default</jta-data-source>
<properties>
<property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
<property name="eclipselink.ddl-generation.output-mode"
value="both" />
</properties>
</persistence-unit>
</persistence>
내가 다음 Entity
클래스:
order.entity.LineItem
order.entity.LineItemKey
order.entity.Order
order.entity.Part
order.entity.PartKey
order.entity.Vendor
order.entity.VendorPart
질문
- 사람이 무엇을 알고 해당하는 persistence.xml 모 OpenJPA?
- 또는,사람이 수리하는 OpenJPA 튜토리얼을 커버하는 이러한 문제는 것으로 그냥 좋
해결책
는 경우 추가 openjpa.jdbc.SynchronizeMappings
제공 아래와 같이 OpenJPA 것이 자동으로 만들의 모든 테이블을,모든 당신의 기본 키와 모든 외국 열쇠를 정확하게 일치하는 개체
<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
또는,당신은 당신이 사용할 수 있습 EclipseLink 에 TomEE 가 EclipseLink 항아리 <CATALINA_HOME>/lib/
여기에 참조 일반적인 속성 PersistenceProvider
다른 팁
Foreign key
다음 줄을 만들지 않는 외국 열쇠:
<property name="openjpa.jdbc.SynchronizeMappings"
value="buildSchema(ForeignKeys=true)"/>
만 스키마 생성하고 삭제하는 내용의 데이터베이스입니다.
하지만 당신이 원하는 경우 외국인을 만들 키를 사용하여 다음과 같은 라인:
<property name="openjpa.jdbc.SynchronizeMappings"
value="buildSchema(foreignKeys=true,schemaAction='dropDB,add')"/>
<property name="openjpa.jdbc.SchemaFactory"
value="native(foreignKeys=true)" />
<property name="openjpa.jdbc.MappingDefaults"
value="ForeignKeyDeleteAction=restrict, JoinForeignKeyDeleteAction=restrict"/>
보 생성 SQL
다른 방법으로,당신이보고 싶은 경우에는 SQL 출력:
<property name="openjpa.Log"
value="DefaultLevel=TRACE,SQL=TRACE" />
참고:하기 위해시 생성되는 출력에서 TomEE 콘솔,당신을 변경할 필요가 로그 수준에서 파일 loggin.properties
가 openjpa.level = FINEST
에 더 많은 참조 http://openjpa.apache.org/faq.html