2009-05-15 5 views
2

Netbeans과 같은 IDE는 지속성 컨텍스트를 통해 엔티티 클래스를 생성 할 수 있습니다. 기본 생성 방법 (외부 도구 또는 IDE의 일부인지 확실하지 않음)에 액세스 할 수있는 경우 런타임시 동적으로 데이터베이스 엔터티 클래스를 생성 할 수 있습니까? 리플렉션을 사용하여 엔티티 클래스에 연결할 수 있다는 아이디어가 있습니다.런타임시 데이터베이스 스키마에서 JPA 엔티티 클래스를 생성 할 수 있습니까?

다른 방법으로 이동하여 엔티티 클래스에서 데이터베이스를 생성 할 수 있다는 것을 알고 있습니다.하지만 내 작업 환경의 사용 권한 문제로 인해 사용하지 않을 것입니다. 그러나 프로세스를 취소하고 데이터베이스에서 클래스를 가져 오는 경우 내 환경에서 가능할 수 있습니다. 아이디어는 데이터베이스가 구성/제어의 단일 지점 역할을한다는 것입니다.

답변

1

이론적으로는 가능하지만 어떤 점이 있습니까? Java는 정적으로 타입 화되어 있으므로 만 생성 된 클래스를 리플렉션으로 사용할 수 있으므로 동작을 부여 할 방법이 없으므로 객체 관계형 매핑의 전체 지점을 제거해야합니다. 데이터를 맵에로드하거나 SQL 레코드 세트를 사용하는 것이 더 편리합니다.

기존 스키마가있는 경우 응용 프로그램에 필요한 방식으로 작동하고 클래스를 선언적으로 스키마에 매핑 할 수 있습니다. 그렇게하면 코드는 애플리케이션 로직의 가장 단순한 표현이며 지속성에 의존하지 않습니다.

+0

나는 실제로 이미 다른 응용 프로그램에서지도 접근 방식을 사용했습니다. ORM 레이어를 통해 실험 해보고 싶었습니다. 기본 아이디어는 데이터베이스를 구성의 주요 포인트로 삼고 프로그램이 동적으로 반응하도록하는 것입니다. 이것은 실용적인 학문 순수 주의자의 더 많은 것입니다. 이미 작동하는 응용 프로그램을 작성했습니다. 이제는 응용 프로그램을 향상시킬 수 있는지보고 싶습니다. –

+0

개선의 가장 좋은 방법이라고 생각하지 않습니다. 먼저 JPA를 사용하도록 설계된 방식으로 JPA를 사용하지 않는 것이 좋습니다. 깨끗하고 지속성에 의존하지 않는 객체 지향 코드를 작성하고 JPA를 사용하여 클래스를 데이터베이스 스키마에 매핑하십시오. 그것은 "순수"하고 "실용적인"것입니다. – Nat

+0

Nat, 나는 또한 전에 그것을했다. 제가 말했듯이, 이것은 새로운 것을 실험하는 것에 관한 것입니다. –

1

데이터베이스에서 Java 객체로 리버스 엔지니어링을 수행하는 도구를 JBoss 웹 사이트에서 찾을 수 있습니다.

소스 코드를 사용할 수 있습니다.

https://www.jboss.org/tools/download/stable.html

+0

Jboss가이를위한 표준 도구입니까? 많은 IDE에이 기능이있는 것처럼 보입니다. 따라서 DB에서 ORM 클래스를 빌드하는 표준 JPA 또는 Hibernate 도구가 있어야한다고 가정했습니다. –

+0

표준 나는 잘 모른다. 이것은 어쨌든 Hibernate에서 사용되는 것입니다. –

+0

슬프게도 이것은 최대 절전 모드와 같습니다. –

1

당신이 최대 절전 모드를 사용하는 가정하면, 데이터베이스 스키마를 생성 할 Hibernate Tools을 사용할 수 있습니다. 주로 Eclipse와 Ant를 위해 설계되었지만, 이론적으로는 다른 JAR과 마찬가지로 연결하여 호출 할 수 있습니다.

+0

감사합니다. JPA와 동일한 기능을 알고 있다고 생각하지 마십시오. –