VxTableEntityMapper
는 Data의 Entity 구조 (테이블, 컬럼 등)를 동적으로 매핑하여 관리하는 기능을 제공한다.
내부적으로는 VxTableEntityMapperApplicationListener
에 의해 로드 기능이 실행되며, loadTableEntityInfo
메소드를 통해 테이블 컬럼 매핑 정보 클래스를 조회하여 로드를 수행한다.
TableMapping
어노테이션은 테이블 매핑 기본 정보를 설정할 수 있다. 해당 어노테이션을 Class에 추가할 경우, VxTableEntityMapper
의 수집 대상이 된다. 아래의 값을 어노테이션으로 설정할 수 있다.
@TableMapping(value = "code", tableName = "VECTORX_CMM_CD")
public class VxCodeTableMappingModel extends VxTableMappingModel {
public String grpCd = "GRP_CD";
public String dtlCd = "DTL_CD";
public String cdNm = "CD_NM";
public String cdDesc = "CD_DESC";
public String uprGrpCd = "UPR_GRP_CD";
public String uprDtlCd = "UPR_DTL_CD";
public String srtNo = "SRT_NO";
public String useYn = "USE_YN";
public String rmk = "RMK";
public String regDttm = "REG_DTTM";
public String regUsrId = "REG_USR_ID";
public String regUsrIp = "REG_USR_IP";
public String updDttm = "UPD_DTTM";
public String updUsrId = "UPD_USR_ID";
public String updUsrIp = "UPD_USR_IP";
public String etc1 = "ETC1";
public String etc2 = "ETC2";
public String etc3 = "ETC3";
public String etc4 = "ETC4";
public String etc5 = "ETC5";
public String lclsCd = "LCLS_CD";
public String lclsNm = "LCLS_NM";
public String mclsCd = "MCLS_CD";
public String mclsNm = "MCLS_NM";
public String grpNm = "GRP_NM";
public String cdLen = "CD_LEN";
}
위의 샘플처럼 @TableMapping
어노테이션 설정을 통해 매핑의 키 값과 테이블 명, 시퀀스 명 등을 설정할 수 있으며, 컬럼의 매핑은 프로퍼티 별로 정의한다.
프로퍼티는 기본 public 대상만을 리딩하도록 되어 있으므로 반드시 public 한정자를 사용하여 정의하여야 한다.
TableMapping을 동적으로 변경할 수 있는 설정으로 VxTableMappingPostProcessor
인터페이스를 구현하여 TableMapping 후처리를 수행할 수 있다.
@FunctionalInterface
public interface VxTableMappingPostProcessor {
/**
* 테이블 매핑 정보를 동적으로 변경하고, 반환
*
* @param <T>
* @param tableMappingModel
* @return
*/
<T> T process(T tableMappingModel);
public static class None implements VxTableMappingPostProcessor {
@Override
public <T> T process(T tableMappingModel) {
return tableMappingModel;
}
}
}
인터페이스의 원형은 위와 같으며, @TableMapping
어노테이션에 postProcessor 속성으로 추가할 수 있다.