문제

지금은 매우 간단한 웹 사이트를 약 5 페이지로 만들고 있습니다. 질문은 과잉이 있고 일종의 데이터베이스 매핑 솔루션을 통합 할 시간이거나 평범한 오래된 JNDI를 사용하는 것이 더 좋을지 여부입니다. 데이터베이스에서 읽거나 쓰는 데 필요한 12 가지가있을 것입니다. 나는 이러한 기술에 대한 기본적인 이해를 가지고 있다고 생각하지만 여전히 문서를 많이 언급 할 것입니다. 다른 사람이 전에 결정에 직면 한 사람이 있습니까?

편집 : 죄송합니다. DB 연결과 JDBC를 조회하여 작업을 수행하려면 JNDI를 지정해야했습니다.

도움이 되었습니까?

해결책

짧은 대답 : 지원하고자하는 복잡성에 따라 다릅니다.

긴 답변 :

우선, ORM (Object Relational Mapping- 데이터베이스 매핑 -) 및 JNDI (Java Naming 및 Directory Interfaces)는 두 가지 다른 것입니다.

이미 알고 있듯이 첫 번째는 데이터베이스 테이블을 클래스 및 객체에 매핑하는 데 사용됩니다. 두 번째는 리소스에 대한 조회 메커니즘을 제공하는 것이며, 데이터 소스, EJB, 대기열 또는 기타 일 수 있습니다.

아마도 당신의 평균 "jdbc".

이제 귀하의 질문에 관해서 : 간단하다면 ORM을 구현할 필요가 없을 수도 있습니다. 숫자 테이블은 최대 약 5-10이며 작동은 정말 간단합니다.

아마도 평범한 JDBC를 사용하면 충분할 것입니다.

DAO 패턴을 사용하는 경우 나중에 변경하여 필요한 경우 ORM 전략을 지원할 수 있습니다.

이렇게 : 직원 테이블이 있다고 가정 해 봅시다

DB의 모든 필드와 함께 직원.java를 직접 사용하고 (너무 오래 걸리지 않아야 함) :

+findById( id ): Employee
+insert( Employee ) 
+update( Employee )
+delete( Employee ) 
+findAll():List<Employee>

그리고 구현은 매우 간단합니다.

select * from employee where id = ?
insert into employee ( bla, bla, bla ) values ( ? , ? , ? )
update etc. etc 

응용 프로그램이 너무 복잡해지면 DAO 구현을 변경할 수 있습니다. 예를 들어 "SELECT"메소드에서 코드를 변경하여 작업을 수행하는 ORM 객체를 사용합니다.

public Employee selectById( int id ) {
      // Commenting out the previous implementation...
      // String query = select * from employee where id = ? 
      // execute( query )  

      // Using the ORM solution

       Session session = getSession();
       Employee e = ( Employee ) session.get( Employee.clas, id );
       return e;
}

이것은 예를 들어, 실생활에서 절제 공장이 Orm Dao를 만들 수 있지만, 그것은 offtopic입니다. 요점은 단순하게 시작할 수 있다는 것입니다. 필요한 경우 나중에 구현을 변경할 수 있습니다.

물론 기술을 배우려면 1 테이블로도 Rigth를 시작할 수 있습니다.

하나 또는 다른 하나의 선택 (ORM 솔루션)은 기본적으로 사용중인 기술에 따라 다릅니다. 예를 들어 Jboss 또는 기타 OpenSource 제품의 경우 최대 절전 모드가 훌륭합니다. 그것은 OpenSource이며, 배울 수있는 많은 자원이 있습니다. 그러나 이미 TopLink (Oracle Application Server와 같은)이있는 것을 사용하는 경우 또는베이스가 이미 TopLink에 구축 된 경우 해당 프레임 워크를 유지해야합니다.

그건 그렇고, Oracle은 BEA를 인수 한 이후로, 그들은 현재 "Oracle Weblogic Application Server"에서 Kodo (Weblogic Peresistence Framework)를 Toplink로 대체한다고 말했다.

나는 당신이 이것에 대한 더 많은 정보를 얻을 수있는 몇 가지 리소스를 남깁니다.


이 "Enterprise Application Architecture의 패턴"책인 Martin Fowler는 다음과 같은 곳을 설명합니다. 여기에 카탈로그가 있습니다. 데이터 소스 아키텍처 패턴 대 객체 관계 행동 패턴을 살펴보십시오.

PEAA 카탈로그


DAO (Data Access Object)는 핵심 J2EE 패턴 카탈로그의 일부입니다.

DAO 패턴


이것은 최대 절전 모드를위한 스타터 튜토리얼입니다.

최대 절전 모드


TopLink의 공식 페이지 :

탑 링크


마지막으로 JPA에 대한 좋은 생각은 최근에 제공자를 변경할 수 있다는 것입니다.

단순한 시작한 다음 진화하십시오.

이게 도움이 되길 바란다.

다른 팁

특히 확장 할 계획이없는 경우 매우 간단한 애플리케이션의 경우 과도한 것처럼 보입니다. 그러나이 간단한 응용 프로그램을 사용하는 사람들을 사용하는 것이 가치가있는 것 같습니다. 따라서 다음에 사용할 수있는 무언가가있을 때 어떻게 작동하는지 더 잘 이해할 수 있습니다.

평범한 오래된 JDBC를 의미합니까? 작은 프로젝트는 특히 시간이있는 경우 ORM 프레임 워크 중 하나를 수령 할 수있는 좋은 기회 일 수 있습니다.

더 많은 정보가 없으면 권장 사항을 어떤 식 으로든 제공하기가 어렵습니다.

내 경험의 규칙은 읽기 전용이라면 JDBC에서 기꺼이 수행 할 의향이 있지만 SQLQuery와 함께 빈 최대 절전 모드 프로젝트를 사용하여 Hibernate의 유형 매핑을 활용하는 것을 선호합니다. 글을 작성해야 할 때, 나는 몇 가지 속성을 설정하는 것이 훨씬 쉽기 때문에 최대 절전 모드로 이동 한 다음 각 열을 개별적으로 설정하는 것보다 저장을 호출하기 때문입니다. 변경되지 않은 객체에 대한 업데이트를 피하기 위해 최적화를 시작해야 할 때 OR/M과 더러운 점검으로 더 좋습니다. 외국의 주요 관계를 다루는 것은 한 번 매핑 한 다음 getters를 사용해야한다는 또 다른 신호입니다. 동일한 논리가 Toplink에 적용되지만, 내가 사용한 지 3 년 동안 HQL과 같은 것을 추가하지 않았다면, 최대 절전 모드는 순수한 SQL에서 이런 종류의 전환에 훨씬 더 나을 것입니다. 모든 객체/테이블을 매핑 할 필요는 없으며 명확한 이점이있는 것만 마찬가지입니다. 내 경험상, 기존 또는/M을 사용하지 않는 대부분의 프로젝트는 새로운 프로젝트를 만들게됩니다.

그만큼 베스트 ORM을 배우는 방법은 작은 프로젝트에 있습니다. 이 프로젝트에서 시작하십시오.

일단 당신이 그것의 교수형을 얻으면, 당신은 모든 것에 ORM을 사용할 것입니다.

ORM에 너무 작은 것은 없습니다. 첫 두 프로젝트 후에는 다른 방식으로 일할 수 없다는 것을 알게 될 것입니다. ORM 매핑은 일반적으로 거의 다른 작업 방식보다 더 의미가 있습니다.

여기에 다양한 TopLink 가이드를 보면 소개, 예제, 시나리오 등이 있습니다.

http://docs.oracle.com/cd/e14571_01/web.1111/b32441/toc.htm

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