[SPRING] 다중 데이터베이스 스키마를 사용하는 JPA
SPRING다중 데이터베이스 스키마를 사용하는 JPA
JPA / Spring을 사용하여 특정 문제에 약간의 문제가 있습니다.
엔터티에 스키마를 어떻게 동적으로 할당 할 수 있습니까?
스키마 AD에 속하는 TABLE1과 BD에 속하는 TABLE2가 있습니다.
@Entity
@Table(name = "TABLE1", schema="S1D")
...
@Entity
@Table(name = "TABLE2", schema="S2D")
...
스키마는 환경 (Dev / Acc / Prd)에 따라 달라 지므로 주석 속성에 하드 코드되지 않을 수 있습니다. (수락 있음) 스키마는 S1A 및 S2A입니다.
이것을 어떻게 할 수 있습니까? 다음과 같은 일종의 자리 표시자를 지정할 수 있습니까?
@Entity
@Table(name = "TABLE1", schema="${schema1}")
...
@Entity
@Table(name = "TABLE2", schema="${schema2}")
...
그래서 스키마는 환경에있는 속성 파일을 기반으로 대체됩니까?
건배
해결법
-
==============================
1.나는 동일한 문제를 해결하기 위해 persistence.xml을 사용하여 해결했다. dbm Shema를 선언 한 내에서 필요한 orm.xml 파일을 참조했다.
나는 동일한 문제를 해결하기 위해 persistence.xml을 사용하여 해결했다. dbm Shema를 선언 한 내에서 필요한 orm.xml 파일을 참조했다.
<persistence 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" version="2.0" > <persistence-unit name="schemaOne"> . . . <mapping-file>ormOne.xml</mapping-file> . . . </persistence-unit> <persistence-unit name="schemaTwo"> . . . <mapping-file>ormTwo.xml</mapping-file> . . . </persistence-unit> </persistence>
이제 특별한 스키마를위한 EntityManagerFactory를 생성 할 수있다.
EntityManagerFactory emf = Persistence.createEntityManagerFactory("schemaOne");
-
==============================
2.배포시 2 개의 orm.xml 파일을 가지고있는 경우 한 가지 할 수 있습니다. 하나는 schema1 용이고 다른 하나는 schema2 용이고 그런 다음 persistence.xml에는 2 개의 영속성 단위가 정의되어 있습니다. 주석을 넣는 것은 스키마와 같은 것을 바꿀 필요가 있다면 반 패턴입니다.
배포시 2 개의 orm.xml 파일을 가지고있는 경우 한 가지 할 수 있습니다. 하나는 schema1 용이고 다른 하나는 schema2 용이고 그런 다음 persistence.xml에는 2 개의 영속성 단위가 정의되어 있습니다. 주석을 넣는 것은 스키마와 같은 것을 바꿀 필요가 있다면 반 패턴입니다.
-
==============================
3.다음을 시도하십시오.
다음을 시도하십시오.
puplic class MyClass { public static final String S1D="S1D"; public static final String S2D="S2D"; } @Entity @Table(name = "TABLE1", schema=MyClass.S1D) ... @Entity @Table(name = "TABLE2", schema=MyClass.S2D) ...
-
==============================
4.context.xml의 두 개의 DataSource 선언 (각 스키마 당 하나씩)을 가질 수 있으며이 데이터 소스를 사용하여 두 개의 지속성 단위를 정의 할 수 있습니다. context.xml은 다른 환경의 응용 프로그램 서버에서 다를 수 있습니다.
context.xml의 두 개의 DataSource 선언 (각 스키마 당 하나씩)을 가질 수 있으며이 데이터 소스를 사용하여 두 개의 지속성 단위를 정의 할 수 있습니다. context.xml은 다른 환경의 응용 프로그램 서버에서 다를 수 있습니다.
-
==============================
5.데이터 소스를 만들 때 다른 스키마를 사용하도록 연결을 초기화 할 수 있습니다
데이터 소스를 만들 때 다른 스키마를 사용하도록 연결을 초기화 할 수 있습니다
e. 감독
weblogic / oracle에서 JDBC 풀에 대한 기본 스키마 지정
-
==============================
6.주석 인수는 최종적이어야하므로 런타임에 변경할 수 없습니다.
주석 인수는 최종적이어야하므로 런타임에 변경할 수 없습니다.
from https://stackoverflow.com/questions/1301399/jpa-using-multiple-database-schemas by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 매개 변수 인코딩 가져 오기 (0) | 2018.12.19 |
---|---|
[SPRING] Postman rest client에서 spring csrf 토큰을 보내려면 어떻게해야합니까? (0) | 2018.12.19 |
[SPRING] 스프링 데이터 저장소에서 Spring의 선언적 캐싱 지원을 테스트하는 방법은 무엇입니까? (0) | 2018.12.19 |
[SPRING] 컨트롤러에서 BindingResult에서 오류 텍스트를 가져 오는 방법 (0) | 2018.12.19 |
[SPRING] Spring XML 설정에서 주어진 타입의 모든 빈을 수집하고 삽입하는 법 (0) | 2018.12.19 |