VxTableEntityMapper는 Data의 Entity 구조 (테이블, 컬럼 등)를 동적으로 매핑하여 관리하는 기능을 제공한다.

내부적으로는 VxTableEntityMapperApplicationListener 에 의해 로드 기능이 실행되며, loadTableEntityInfo 메소드를 통해 테이블 컬럼 매핑 정보 클래스를 조회하여 로드를 수행한다.

@TableMapping

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 한정자를 사용하여 정의하여야 한다.

VxTableMappingPostProcessor

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 속성으로 추가할 수 있다.