2012-11-28 6 views
1

MySQL에서 JPA-Hibernate를 올바르게 사용하는 응용 프로그램이 있습니다. 이 경우 엔티티에서 id 생성에 자동 전략을 사용하고 있습니다. 다른 한편으로, 나는 오라클을 사용하는 다른 응용 프로그램을 가지고 있으며이를 위해 시퀀스 전략을 사용하고 있습니다. 요점은 Oracle/MySQL/Sql Server에 대해 "일반적인"전략을 사용할 수 있는지 알고 싶기 때문에 내 응용 프로그램을 더 이식성있게 만듭니다.JPA id 생성 일반 전략

감사합니다.

답변

4

간편한 휴대용 솔루션은 TableGenerator을 사용하는 것입니다. 값은 데이터베이스 테이블에서 관리되고 검색되고 SQL 쿼리로 처리되므로 데이터베이스 공급 업체 특정 구문이 사용되지 않습니다.

0

특정 DB 기능에 의존하지 않는 일반적인 전략에는 ID 생성을위한 추가 테이블이 필요합니다. 그러한 전략 : hilo, enhanced-table. 또한 uuid.hex, uuid, uuid2과 같은 UUID 생성을 기반으로 한 전략을 사용할 수 있습니다. 다른 전략은 다른 DB 특정 기능을 사용하므로 동작이 다를 수 있습니다. 예를 들어 native은 MySQL과 Postgres에서 다르게 작동합니다. MySQL (생성자)에서는 객체를 저장할 때 삽입 권한이 있습니다. Postgres (시퀀스)에서는 일반 플러시에만 삽입됩니다. 가능한 모든 전략을보고 알고리즘과 문서를 탐색하려면 DefaultIdentifierGeneratorFactory의 소스를 살펴볼 수 있습니다.

일반적으로 2 개 이상의 이기종 앱을 동일한 DB에서 작동하도록 만드는 것은 좋지 않습니다. 특히 모든 애플리케이션이 데이터베이스에 쓰는 경우 특히 그렇습니다. 귀하의 DB는 유지 보수 및 리팩토링이 매우 어려울 것입니다.

+0

두 개의 앱이 동일한 데이터베이스를 사용한다고 생각하지 않습니다. 내가 OP의 질문을 이해한다면 이동성을 원한다. – David