2013-09-04 5 views
0

는 열이 다릅니다의 내가 이제 두 개의 테이블 테이블의 행을 나타내는 빈을 만들기 동적으로

table1 (
name varchar2, 
id int, 
customer bit, --or boolean 
) 

table2 (
name2 varchar2, 
id2 int, 
dob Date, 
) 

번호, 이름 및 데이터 유형을 가지고 예를 취할 수 있습니다 (결과 집합으로 인해 복잡한 SQL 쿼리에 반환). 그들은 select * from table1 또는 select id2 from table2

과 같은 쿼리를 기반으로 반환됩니다. 반환되는 행 (숫자, 이름 및 데이터 유형)을 동적으로 나타낼 수있는 Bean을 동적으로 만들 수 있습니까?

예 : 표를 위해 내가 그것을 행이 번호, 이름 및 데이터 형식의 측면에서 ( 을 반환 나타낼 수 빈을 만들 수 있습니다 표 2

+0

'객체 관계 매핑 프레임 워크 '를 고려해 보시겠습니까? '동면'같은거야? –

+0

@BkSantiago OP는 런타임에 클래스를 동적으로 생성하는 방법을 묻습니다. – Juvanis

+0

빈을 동적으로 생성 할 때 중요한 점은 무엇입니까? 미리 메소드에 대해 코드를 작성할 수는 없습니다. 반환 된 필드의'Map'을 사용할 수 있습니까? – artbristol

답변

0

에 대한

class Table1{ 

private String name; 
private int id; 
private boolean customer; 
//Corresponding getters and setters 
} 

같은 방법으로 같은 것을 만들 수 shuould) 동적으로?

은 Java로 가능합니다. JPA 또는 Hibernate을 사용하십시오. Object를 사용하여 행을 매핑했습니다.

+1

나는 OP가 런타임에 클래스를 동적으로 생성하는 것에 대해 묻고 있다고 생각한다. 그렇지 않으면, 나는 그가이 사소한 대답을 알고 있다고 생각합니다. 그래서 질문은 기본적으로 반영에 관한 것입니다. – Juvanis

0

해결책은 ResultSetMetaData을 탐색하고 모든 열을 반복 할 수 있습니다. Javassist을 사용하면 매우 쉽게 필드 및 상대 접근자를 사용하여 POJO를 만들 수 있습니다 (DynaBean도보실 수 있습니다).
특정 RDBMS 유형을 사용하는 경우 열의 jdbc 유형을 감지하는 것이 약간 어려울 수 있습니다.

관련 문제