인프런 커뮤니티 질문&답변

Truestar님의 프로필 이미지
Truestar

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

실전 예제 1 - 요구사항 분석과 기본 매핑

멀티DB(다중유닛) 환경에서 Entity 들을 유닛 별로 등록시킬 방법이 있을까요?

해결된 질문

작성

·

380

1

안녕하세요 김영한 강사님^^ 열심히 응용하다가 문제가 생겨 여쭈어봅니다

1. 일반예제 - 메모리 DB
persistence-unit: test

2. 실전예제 - 실제 DB
persistence-unit: jpa_shop


제가 공부 목적으로 DB를 용도별로 나눠 여러 케이스 예제를 만드는 중입니다.

저의 경우는 만들어놓은 엔티티 개수대로 테이블이 생성이 되는데 다음과 같이 EMF를 나누어 특정 DB만 작동되게는 해보았습니다.

예제1) 의 EMF 생성옵션
Persistence.createEntityManagerFactory("mem");

예제2) 의 EMF 생성옵션
Persistence.createEntityManagerFactory("jpa_shop");

그런데 필요없는 다른 챕터의 Member  시리즈 객체 까지
모두 엔티티화 되어 테이블까지 같이 생성이 됩니다.
필요없는 @Entity 를 주석처리 하지않고
특정 앤티티는 생성되지 않게 하는 방법이 있을까요?
패키지 필터 같은 기능이 있는지 궁금합니다.

읽어주셔서 감사합니다.

답변 4

3

Truestar님의 프로필 이미지
Truestar
질문자


적용 초반에 변수가 생겨서 적용하는데 착오가 많았지만
다음과 같이 해결 하였습니다.

<persistence-unit name="유닛명">
		<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
		<class>풀페키지.엔티티1</class>
		<class>풀페키지.엔티티2</class>
		...
		...
		<exclude-unlisted-classes>true</exclude-unlisted-classes>
		<properties>
			<property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
			...
			...

여기서 주의 하실 점이 있습니다

*** 현 hibernate 5.4 기준 ***

다음 선언 순서를 지켜야 합니다.

1. <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
2. <class>등록할 엔티티</class>
    ...
    ...
3. <exclude-unlisted-classes>true</exclude-unlisted-classes>

주신 정보 덕분에 잘 해결되었습니다.
감사합니다^^!!!

같은 고민하고 있었는데 감사합니다!!

Truestar님의 프로필 이미지
Truestar
질문자

지금은 Git으로 여러 프로젝트모듈 없이 하고있어요.

Git을 안쓰고는 예제 만드는것도 노하우가 필요한것 같습니다☺

1

김영한님의 프로필 이미지
김영한
지식공유자

성공하셨군요^^! ㅎㅎ

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. Truestar님^^

제가 이렇게 사용해본 적이 없어서 저도 시도해본 적은 없지만

권남님이 남겨주신 다음 글을 읽어보시면 도움이 될 것 같아요^^

https://kwonnam.pe.kr/wiki/java/jpa/persistence.xml

0

Truestar님의 프로필 이미지
Truestar
질문자

질문을 알기쉽게 다시 수정했습니다.

Truestar님의 프로필 이미지
Truestar

작성한 질문수

질문하기