금융권에서 오라클 DBMS를 선택하는 이유
·
Data
들어가며금융권에서 차세대 시스템을 구축할 때 가장 중요한 고려사항은 무엇일까요? 바로 절대 실패할 수 없는 시스템의 안정성입니다. 고객의 자산을 다루는 금융 시스템에서 단 1초의 다운타임도 막대한 손실로 이어질 수 있기 때문입니다.오늘은 금융권에서 오라클 데이터베이스를 선택하는 이유와 그 장단점에 대해 자세히 살펴보겠습니다.🏦 금융권이 오라클을 선택하는 핵심 이유1. RAC(Real Application Clusters)의 완성도금융권에서 오라클을 선택하는 가장 큰 이유는 RAC 기능 때문입니다.💡 RAC란?물리적으로 구성된 여러 대의 서버를 하나의 시스템으로 구성하여, 실제로는 여러 대의 서버를 사용하지만 클러스터링 기술을 통해 하나의 데이터베이스처럼 사용할 수 있게 하는 소프트웨어RAC가 금융권에..
JPA 연관관계 매핑 vs 값 컬렉션 매핑: 뭘 선택해야 할까
·
Data
개인프로젝트를 진행하던 중 엔티티 매핑에 대해 생긴 고민 입니다.📍 배경 처음 도메인 모델을 분석했을 때: ❶ 도메인 관계 분석SMS템플릿과 템플릿변수는 개념적으로 M:N 양방향관계 였다하지만 JPA에서는 M:N 양방향관계 보다 중간 테이블을 명시적으로 모델링 하는것이 권장되므로 SMS템플릿변수관계 엔티티를 하나 생성했다SMS템플릿 : SMS템플릿변수관계 = 1:N (양방향)SMS템플릿변수관계 : 템플릿변수 = N:1 (양방향)❷ 연관 관계 최적화JPA 성능 최적화를 위해 불필요햔 양방향 관계를 제거했다SMS템플릿 : SMS템플릿변수관계 = 1:N (양방향 유지)SMS템플릿변수관계 : 템플릿변수 = N:1 (양방향 -> 단방향) 템플릿변수 클래스에서 `mappedBy` 속성을 제거하여 단방향 관계로..
JPA 복합키 엔티티에서 단일 필드 조회 문제 해결하기
·
Data
개인프로젝트 개발 중 JPA 복합키를 사용한 엔티티에서 단일 필드로 조회에서 생긴 이슈 입니다 📍 배경SMS 발송 문구를 조립하는 기능을 구현하기 위한 세가지 테이블 구조는 이와 같습니다SMS 템플릿 문구 (SMS_TMPLT) 테이블템플릿 변수 (TMPLT_VAR) 테이블두 테이블의 관계를 저장하는 SMS_TMPLT_VAR_REL 테이블관계 테이블 (SMS_TMPLT_VAR_REL) 은 단순히 연관 관계만 저장하면 되므로 별도의 식별자 없이 복합키로 구성했습니다복합키를 가진 엔티티는 다른 분들의 블로그 글을 참고하여 구현했습니다 📍 구현 과정① 복합키 클래스 구현@Embeddable@Getter @Setter@EqualsAndHashCode@NoArgsConstructor@AllArgsConstruc..
JpaRepository를 상속받으면 @Repository 어노테이션을 안달아도 되는 이유
·
Data
개인프로젝트를 하던 중 생긴 궁금증입니다.QueryDsl 인터페이스를 상속받는 구현체에는 @Repository를 선언해야 하는데, JpaRepository를 상속받는 인터페이스에는 @Repository를 작성하지 않아도 되는 이유가 무엇일까?📍 배경public interface BookingQueryDsl { public List findAll(BookingSearch bookingSearch); }@Repository public class BookingQueryDslImpl implements BookingQueryDsl { private final JPAQueryFactory queryFactory; public BookingQueryDslImpl(EntityMana..
데이터 마이그레이션이란?
·
Data
📍 데이터 마이그레이션데이터 이행이라고도 불린다.원본 데이터(Legacy Data)를 목적에 맞게 추출(Export), 변환(Conversion), 적재(Transfer) 하는 기법데이터 마이그레이션 전략에 따라 이행절차, 전담인력, 데이터표준화 등의 준비가 필요SQL 스크립트, 프로그래밍, 전용 툴을 이용하여 전개할 수 있음📍 데이터 마이그레이션 기법기법설명특징Export / Import저용량 DB 이행에 유리 (데이터양이 많을수록 불리)고용량의 경우 이행시간 과다 소요테이블 데이터만 이행시 사용코드성테이블을 옮길 때 주로 사용Direct Loading원본 테이블 조회(SELECT) 후 목표 테이블로 삽입 (INSERT) 테이블 데이터만 이행시 사용INSERT∙∙∙SELECT∙∙∙구문Tablespa..