문제

SourceForge의 JBJF 프로젝트에서 작업하고 있으며이 프레임 워크의 데이터베이스 액세스를 개선하고자합니다. 현재 반 유연성이지만 액세스는 작업 수준에서 수행됩니다.

우리는 본질적으로 일반적인 종류의 간단한 인터페이스를 설정하고 JBJF에서/데이터베이스 액세스를 호스팅 할 수있는 간단한 인터페이스를 설정하고 싶습니다. 따라서 프레임 워크 클래스는 어떤 종류의 데이터베이스를 신경 쓰지 않으며, getConnection ()과 같은 메소드를 호출하고 java.sql.connection 객체가 다시 나타납니다.

XML 파일로 데이터베이스 서비스를 구성하고 프레임 워크가 시작될 때 플러그인을로드하는 플러그인 유형 구조를 갖춘 일반적인 DAO 레이어 또는 플러그인 유형 구조가있는 일반적인 DAO 레이어가 더 적합 할 것인지 궁금합니다.

티아,

adym

도움이 되었습니까?

해결책

나는 최대 절전 모드가 너무 커지고 부풀어 오르고 있다고 생각하기 시작했지만 최근에 최신 3.5 릴리스를 사용하고 JPA를 사용하여 프로젝트를 수행했으며 확실히 슬림하고 다른 3 개보다 훨씬 나아졌습니다. .x 릴리스. 최대 절전 모드를 사용하여 JPA를 권장합니다 :-)

이 접근법의 가장 큰 장점 중 하나는 최대 절전 모드가 여러 다른 데이터베이스 방언을 다루는 방법입니다. 우리의 앱은 MySQL, H2 및 SQLServer에서 수정없이 실행됩니다 (아마도 다른 주요 데이터베이스에서도 실행될 것입니다).

다른 팁

모든 것을 추상화하고 JPA를 사용하는 것은 어떻습니까?

세부 사항을 모르면 말하기는 어렵지만 일반적으로 나는 내 자신의 프레임 워크를 작성하지 않고 대신 최대 절전 모드 또는 유사한 ORM 도구를 사용하지 않을 것입니다. 이미 객체를 테이블 및 뒤로 매핑하기 위해 XML을 정의했으며 다른 데이터베이스 구현을 쉽게 교체하거나 교체 할 수 있으며 일반적으로 이런 종류의 작업을 수행하는 훌륭한 도구입니다.

당신이 나열하는 두 가지 옵션은 상호 배타적이지 않습니다. 일부 인터페이스/API를 통해 액세스 할 수있는 DAO/리포지토리 레이어를 가질 수 있으며, 콘크리트 구현은 런타임에 주입되어 종속성을 충족시킵니다.

예를 들어, a WidgetRepository 데이터 액세스 API의 위젯 부분을 정의하는 인터페이스. 그런 다음 a FileSystemWidgetRepository, HibernatewidgetRepository, xmlwidgetRepository, jpawidgetRepository, 인터페이스를 구현하는 등.

일반적인 규칙은 요구 사항을 충족하면서 가능한 한 높은 수준의 추상화를 사용하는 것입니다. 내가 준 예제 목록에서 JPA 기반 저장소는 ORM 프레임 워크조차 추상화하기 때문에 최고 수준이 될 것입니다.

그런 다음 유지할 수 있습니다 WidgetRepository 그것을 사용하는 객체의 참조. 이 인터페이스에 대해서만 코딩합니다. 다음으로, 제자리에 두십시오 의존성 주입 프레임 워크와 같은 , 콘크리트를 주입합니다 WidgetRepository 일부 XML 구성 또는 자동 승리 메커니즘을 기반으로 런타임에서 구현.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top