2012-03-16 1 views
3

이 프로젝트의 시작 부분에서 우리는 영속성을 위해 JDBC 대신에 Hibernate를 선택했지만 우리는 Hibernate가이 애플리케이션의 모든 경우를 적용 ​​할 수 없다는 것을 발견했다. 따라서 우리는 Hibernate가 적용 할 수없는 이러한 경우에 지속성을 위해 JDBC를 사용해야한다. 마지막으로 JDBC 대신 jooq를 선택합니다. 따라서이 응용 프로그램에는 두 가지 종류의 지속성 기술, 즉 최대 절전 모드 & Jooq가 있습니다. 이제 jooq에서 만든 ResultSet을 Hibernate Entity Bean으로 변환하려고합니다. 나는 최대 절전 모드에 대한 리소스를 검색했지만 아무것도 발견하지 못했습니다. 그것은 Hibernate가 API를 가지고 있지 않은 것으로 보인다.ResultSet의 객체를 Hibernate Entity Bean으로 변환하는 방법

그래서 몇 가지 질문이 있습니다.

  1. 최대 절전 모드의 현재 컨텍스트를 어떻게 얻을 수 있습니까?
  2. 이 문맥을 사용하여 ResultSet 객체를 Hibernate Entity Bean으로 변환하려면 어떻게해야합니까?

감사합니다.

+0

당신이 사이트 몇 가지 예를 들어 당신이 최대 절전 모드는 사용하지 수 수있는 곳 : 어쩌면, 그 경우에, 당신은 여전히이 같은 fetch data from a JDBC ResultSet에 jOOQ를 사용할 수 있을까? – ManuPK

+0

잘못된 설명을 드려 죄송합니다. 지금 당장 PM에게 물어 봤습니다. 답변은 일부 개발자의 습관 때문에 JDBC를 사용한다는 것입니다. 이제 jooq를 사용하여 ResultSet 객체를 쿼리하고 반환합니다.이 객체를 최대 절전 모드 엔터티 빈으로 변환하려고합니다. –

답변

3

당신은 jOOQ의 Record.into()ResultQuery.fetchInto() 방법을 보았습니까? 이들은 jOOQ 레코드를 사용자 정의 POJO에 매핑하는 것을 지원합니다. jooq를 사용하여 POJO를 직접 생성하거나 직접 정의 할 수 있습니다. POJO에 JPA 주석이있는 경우, 주석이 사용됩니다. 그렇지 않으면, jOOQ는 메소드 명명 규칙에 따라 POJO에 레코드를 매핑합니다.

예 :

@Entity 
public class POJO { 
    private int id; 

    @Column(name = "ID") 
    public void setId(int id) { 
    this.id = id; 
    } 

    public int getId() { 
    return id; 
    } 
} 

// Fetch several of the above POJO's into a list 
List<POJO> result = 
DSL.using(connection, dialect) 
    .select(MY_TABLE.ID) 
    .from(MY_TABLE) 
    .fetchInto(POJO.class); 

// Fetch single POJO's 
POJO pojo = 
DSL.using(connection, dialect) 
    .select(MY_TABLE.ID) 
    .from(MY_TABLE) 
    .where(MY_TABLE.ID.equal(1)) 
    .fetchOne() 
    .into(POJO.class); 

지금 위의 예에서, 당신은 쿼리를 실행하는 jOOQ을 사용하는 것입니다. ResultSet 객체를 사용자 정의 POJO로 변환하는 것에 대해 이야기하고 있으므로 쿼리 작성자로만 jOOQ를 사용하고 있다고 생각합니다.

ResultSet rs = // [ your querying here ] 
List<POJO> result = create.fetch(rs).into(POJO.class); 
0

JDBC을 사용하기로 결정 했으므로 최대 절전 모드를 코딩해야합니다. 즉, ResultSet에서 읽고 Bean을 채우는 코드를 작성해야합니다. 프로젝트의 시작에있는 경우

등 지금

MyBean mb = new MyBean(); 
mb.setValue1(resultSet.get...); 

, 난 강력 최대 절전 모드를 고려하는 조언, 을 위를 잊어 버려. 최대 절전 모드 here을 시작하십시오.

+0

당신의 아이디어를 가져 주셔서 감사합니다,하지만 더 많은 automatical 변환기가 필요합니다. 즉,이 변환기는 최대 절전 모드 엔터티 빈을 처리 할 수 ​​있습니다, 나는 최대 절전 모드로 관리되는이 콩의 ORM 설정에 따라 콩으로 ResultSet의 개체를 변환하고 싶습니다. Hibernate는 Bean의 ORM 세부 사항을 알고 있기 때문에 Hibernate의 클래스를 처리해야한다. –

+0

최대 절전 모드를 사용하지 않는 경우 결과를 ** 최대 절전 모드 엔터티 빈 **으로 변환 하시겠습니까? 그것들을 ** POJO **라고 부른다 .Hibernate는 데이터베이스를 연결할 때만 ** ORM ** 정보를 알고있다. – ManuPK