타입 매개변수 : T – 결과 자료형
구현된 인터페이스 : RowMapper<T>
자식 클래스 : DataClassRowMapper
public class BeanPropertyRowMapper<T> extends Object implements RowMapper<T>
설명 : 이 클래스는 행을 지정한 매핑된 대상 클래스의 새 인스턴스로 변환하는 RowMapper 구현입니다. 매핑된 대상 클래스는 최상위 클래스 또는 static 중첩 클래스여야 하며 기본 생성자 또는 no-arg 생성자가 있어야 합니다.
컬럼 값은 결과 집합 메타데이터에서 얻은 컬럼 이름을 대상 클래스의 해당 속성에 대한 public setter와 매칭하여 매핑됩니다. 이름은 직접적으로 매칭되거나, 언더스코어로 구분된 이름을 ‘카멜 케이스(camel case)’로 변환하여 동일한 이름으로 매칭됩니다.
대상 클래스의 속성에 대해 여러 일반적인 타입에 대한 매핑이 제공되는데 매핑이 제공되는 대상은 다음과 같습니다. – String, boolean, Boolean, byte, Byte, short, Short, int, Integer, long, Long, float, Float, double, Double, BigDecimal, java.util.Date 등
이름이 일치하지 않는 컬럼과 속성 간의 매핑을 용이하게 하려면 SQL 커맨드를 작성할 때 언더바로 구분된 컬럼 Alias를 사용하면 됩니다.
select fname as first_name from customer; -- 예를 들어 대상 클래스의 setFirstName(String) 메소드는 SQL의 first_name과 매핑할 수 있습니다.
데이터베이스에서 읽어들인 null 값에 대해 해당 setter 메소드를 null로 호출하려 시도하지만, Java의 기본형 타입인 경우 기본적으로 TypeMismatchException이 발생합니다. 대상 클래스의 모든 기본형 프로퍼티에 대해 NULL 데이터베이스 값을 무시하려면, primitivesDefaultedForNullValue 플래그를 true로 설정해주세요. 자세한 내용은 setPrimitivesDefaultedForNullValue(boolean) 메소드를 참조해주세요.
데이터 클래스 생성자가 존재하는 대상 클래스로 매핑해야할 경우는 다음과 같습니다. – 예를 들어 Java의 record 클래스 또는 Kotlin의 data 클래스를 DataClassRowMapper 대신 사용할 경우 데이터 클래스 생성자가 존재하는 대상 클래스로 매핑해야 합니다.
이 클래스는 고성능이 아닌 편리함을 제공하도록 설계되었습니다. 최상의 성능을 위해 맞춤형 RowMapper 구현을 사용하는 것을 고려해 보세요.
추가된 시기 : 2.5 버전
기여자 : Thomas Risberg, Juergen Hoeller, Sam Brannen
추가 자료 : DataClassRowMapper, SimplePropertyRowMapper
필드
제어자 및 자료형 | 필드 | 설명 |
---|---|---|
protect final Log | logger | 서브클래스에서 사용할 수 있는 로거 |
생성자
생성자 | 설명 |
---|---|
BeanPropertyRowMapper() | 빈 스타일의 설정을 위한 새로운 BeanPropertyRowMapper 를 생성합니다. |
BeanPropertyRowMapper(Class<T> mappedClass) | 타겟 Bean에서 채워지지 않은 속성을 허용하는 새로운 BeanPropertyRowMapper 를 생성합니다. |
BeanPropertyRowMapper(Class<T> mappedClass, boolean checkFullyPopulated) | 새로운 BeanPropertyRowMapper 를 생성합니다. |
메소드
제어자 및 자료형 | 메소드 | 설명 |
---|---|---|
protected T | constructMappedInstance(ResultSet rs, TypeConverter tc) | 현재 행에 대해 매핑된 클래스의 인스턴스를 생성합니다. |
protected Object | getColumnValue(ResultSet rs, int index, PropertyDescriptor pd) | 지정된 열에 대한 JDBC 객체 값을 검색합니다. |
protected Object | getColumnValue(ResultSet rs, int index, Class <?> paramType) | 지정된 열에 대한 JDBC 객체 값을 검색합니다. |
ConversionService | getConversionService() | JDBC 값을 빈 속성에 바인딩하기 위한 ConversionService를 반환합니다. |
final Class <T> | getMappedClass() | 매핑 대상 클래스를 가져옵니다. |
protected void | initBeanWrapper(BeanWrapper bw) | 행 매핑에 사용될 BeanWrapper를 초기화합니다. |
protected void | initialize(Class<T> mappedClass) | 주어진 클래스에 대한 매핑 메타데이터를 초기화합니다. |
boolean | isCheckFullyPopulated() | 모든 빈 속성이 데이터베이스 열과 매핑되었는지 엄격하게 검증하고 있는지 여부를 반환합니다. |
boolean | isPrimitivesDefaultedForNullValue() | primitivesDefaultedForNullValue 플래그의 값을 가져옵니다. |
protected String | lowerCaseName(String name) | 주어진 이름을 소문자로 변환합니다. |
protected Set <String> | mappedNames(PropertyDescriptor pd) | 주어진 속성에 대한 매핑된 이름을 결정합니다. |
T | mapRow(ResultSet rs, int rowNumber) | 현재 행의 모든 열에 대한 값을 추출합니다. |
static <T> BeanPropertyRowMapper<T> | newInstance(Class <T> mappedClass) | 새로운 BeanPropertyRowMapper 를 생성하는 정적 팩토리 메서드입니다. |
static <T> BeanPropertyRowMapper<T> | newInstance(Class <T> mappedClass, ConversionService conversionService) | 새로운 BeanPropertyRowMapper 를 생성하는 정적 팩토리 메서드입니다. |
void | setCheckFullyPopulated(boolean checkFullyPopulated) | 모든 빈 속성이 데이터베이스 열과 매핑되었는지 엄격하게 검증할지 여부를 설정합니다. |
void | setConversionService(ConversionService conversionService) | JDBC 값을 빈 속성에 바인딩하기 위한 ConversionService를 설정합니다. |
void | setMappedClass(Class<T> mappedClass) | 각 행을 매핑할 클래스를 설정합니다. |
void | setPrimitivesDefaultedForNullValue(boolean primitivesDefaultedForNullValue) | NULL 데이터베이스 열 값이 대상 클래스의 해당 원시 속성에 매핑될 때 무시할지 여부를 설정합니다. |
protected void | suppressProperty(String propertyName) | 매핑된 속성에서 지정된 속성을 제거합니다. |
protected String | underscoreName(String name) | camelCase로 된 이름을 소문자의 밑줄로 변환합니다. |
필드 세부 사항
logger
protected final Log logger
서브클래스에서 사용할 수 있는 로거
생성자 세부 사항
BeanPropertyRowMapper
public BeanPropertyRowMapper()
Bean 스타일의 설정을 위한 새로운 BeanPropertyRowMapper를 생성
추가 자료setMappedClass(java.lang.Class<T>)
setCheckFullyPopulated(boolean)
BeanPropertyRowMapper
public BeanPropertyRowMapper(Class<T> mappedClass)
타겟 Bean에서 채워지지 않은 속성을 허용하는 새로운BeanPropertyRowMapper
를 생성합니다.
매개변수mapperClass
: 각 행과 매핑되어야 하는 클래스BeanPropertyRowMapper
public BeanPropertyRowMapper(Class<T> mappedClass, boolean checkFullyPopulated)
BeanPropertyRowMapper
를 생성합니다.
매개변수mappedClass
: 각 행과 매핑되어야 하는 클래스checkFullyPopulated
: 모든 Bean 속성이 데이터베이스 컬럼에 서 매핑되었는지 검증 여부
Leave a Reply