BeanPropertyRowMapper<T> 클래스

by

in

타입 매개변수 : 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 Loglogger서브클래스에서 사용할 수 있는 로거

생성자

생성자설명
BeanPropertyRowMapper()빈 스타일의 설정을 위한 새로운 BeanPropertyRowMapper를 생성합니다.
BeanPropertyRowMapper(Class<T> mappedClass)타겟 Bean에서 채워지지 않은 속성을 허용하는 새로운 BeanPropertyRowMapper를 생성합니다.
BeanPropertyRowMapper(Class<T> mappedClass, boolean checkFullyPopulated)새로운 BeanPropertyRowMapper를 생성합니다.

메소드

제어자 및 자료형메소드설명
protected TconstructMappedInstance(ResultSet rs, TypeConverter tc)현재 행에 대해 매핑된 클래스의 인스턴스를 생성합니다.
protected ObjectgetColumnValue(ResultSet rs, int index, PropertyDescriptor pd)지정된 열에 대한 JDBC 객체 값을 검색합니다.
protected ObjectgetColumnValue(ResultSet rs, int index, Class <?> paramType)지정된 열에 대한 JDBC 객체 값을 검색합니다.
ConversionServicegetConversionService()JDBC 값을 빈 속성에 바인딩하기 위한 ConversionService를 반환합니다.
final Class <T>getMappedClass()매핑 대상 클래스를 가져옵니다.
protected voidinitBeanWrapper(BeanWrapper bw)행 매핑에 사용될 BeanWrapper를 초기화합니다.
protected voidinitialize(Class<T> mappedClass)주어진 클래스에 대한 매핑 메타데이터를 초기화합니다.
booleanisCheckFullyPopulated()모든 빈 속성이 데이터베이스 열과 매핑되었는지 엄격하게 검증하고 있는지 여부를 반환합니다.
booleanisPrimitivesDefaultedForNullValue()primitivesDefaultedForNullValue 플래그의 값을 가져옵니다.
protected StringlowerCaseName(String name)주어진 이름을 소문자로 변환합니다.
protected Set <String>mappedNames(PropertyDescriptor pd)주어진 속성에 대한 매핑된 이름을 결정합니다.
TmapRow(ResultSet rs, int rowNumber)현재 행의 모든 열에 대한 값을 추출합니다.
static <T> BeanPropertyRowMapper<T>newInstance(Class <T> mappedClass)새로운 BeanPropertyRowMapper를 생성하는 정적 팩토리 메서드입니다.
static <T> BeanPropertyRowMapper<T>newInstance(Class <T> mappedClass, ConversionService conversionService)새로운 BeanPropertyRowMapper를 생성하는 정적 팩토리 메서드입니다.
voidsetCheckFullyPopulated(boolean checkFullyPopulated)모든 빈 속성이 데이터베이스 열과 매핑되었는지 엄격하게 검증할지 여부를 설정합니다.
voidsetConversionService(ConversionService conversionService)JDBC 값을 빈 속성에 바인딩하기 위한 ConversionService를 설정합니다.
voidsetMappedClass(Class<T> mappedClass)각 행을 매핑할 클래스를 설정합니다.
voidsetPrimitivesDefaultedForNullValue(boolean primitivesDefaultedForNullValue)NULL 데이터베이스 열 값이 대상 클래스의 해당 원시 속성에 매핑될 때 무시할지 여부를 설정합니다.
protected voidsuppressProperty(String propertyName)매핑된 속성에서 지정된 속성을 제거합니다.
protected StringunderscoreName(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

Your email address will not be published. Required fields are marked *