목록코드스테이츠 (39)
Develog

JTA를 이용한 분산 트랜잭션 적용 때때로 서로 다른 데이터소스를 사용하는 한 개 이상의 데이터베이스를 하나의 트랜잭션으로 묶어서 처리해야 할 경우가 있는데 이를 분산 트랜잭션 이라고 한다. 백업을 위해 특정 데이터베이스의 데이터를 다른 데이터베이스로 복제하는 방법은 여러가지가 존재한다. 같은 종류의 데이터베이스일 경우, 복제(Replication) 기능을 이용해서 데이터를 백업할 수 있다. 다른 종류의 데이터베이스 간에 사용할 수 있는 방법은 애플리케이션의 스케쥴링 기능을 통해 주기적으로 원본 데이터베이스의 데이터를 다른 데이터베이스로 백업하는 기능을 구현할 수 있으며, 이런 기능들을 기본적으로 지원하는 Apache NiFi 같은 오픈 소스 기술을 사용할 수도 있다. 두 개의 데이터베이스 설정 두 개의..

학습 목표 트랜잭션(Transaction)이 무엇인지 이해할 수 있다. 트랜잭션(Transaction) 경계가 무엇인지 이해할 수 있다. 트랜잭션이 적용되지 않은 애플리케이션에서 어떤 문제점이 발생할 수 있는지 이해할 수 있다. Spring에서 지원하는 트랜잭션 방식을 이해할 수 있다. 샘플 애플리케이션에 트랜잭션을 적용할 수 있다. 트랜잭션(Transaction)이란? 사례 1 회원이 커피 주문 앱으로 카페라떼 두 잔을 선택하고 결제 버튼을 누른 후, 주문이 진행되는 중에 네트워크 오류로 인해 결제를 완료하는데 실패했다고 치자 그런데, 회원이 주문한 주문이 정상적으로 데이터베이스에 등록이 되고, 주문한 커피 수 만큼의 스탬프가 찍혔다. 이 경우, 카페를 운영하는 쪽에서는 판매 수익을 얻지 못하는 손해를..

학습 목표 Spring Data JPA가 무엇인지 이해할 수 있다. Spring Data JPA를 이용해서 데이터의 저장, 수정, 조회, 삭제 작업을 할 수 있다. JPA의 JPQL을 Spring Data JPA에서 사용할 수 있다. Spring Data JPA를 통한 데이터 액세스 계층 구현 Spring Data JPA란? Spring Data 패밀리 기술 중 하나로써, JPA 기반의 데이터 액세스 기술을 좀 더 쉽게 사용할 수 있게 해주기때문에 데이터 액세스 계층의 구현에 있어 여러분의 개발 시간을 단축 시켜줄 것이다. JPA vs Hibernate ORM vs Spring Data JPA JPA의 경우 이름 자체는 Jakarta Persistence API(또는 Java Persistence API..

엔티티 간의 연관 관계 매핑 연관 관계 매핑이란? 테이블 설계, 클래스 다이어그램 설계를 통해 회원과 주문, 주문과 커피와의 관계를 도출했었던 것과 같이 엔티티 클래스 간의 관계를 만들어주는 것이 바로 연관 관계 매핑이다. 연관 관계 매핑은 참조하는 방향성을 기준으로 생각했을때 단방향 연관 관계와 양방향 연관 관계로 구분할 수 있다. 그리고, 엔티티 간에 참조할 수 있는 객체의 수에 따라서 일대다(1:N), 다대일(N:1), 다대다(N:N), 일대일(1:1)의 연관 관계로 나눌 수 있다. 단방향 연관 관계 Member 클래스가 Order 객체를 원소로 포함하고 있는 List 객체를 가지고 있으므로, Order를 참조할 수 있지만 Order 클래스는 Member 클래스에 대한 참조 값이 없으므로 Order..

학습 목표 JPA가 무엇인지 이해할 수 있다. JPA의 동작방식을 이해할 수 있다. JPA API의 기본 사용방법을 이해할 수 있다. JPA 엔티티에 대한 매핑을 할 수 있다. JPA 기반의 엔티티 간 연관 관계를 매핑할 수 있다. JPA(Java Persistence API)란? JPA(Java Persistence API)는 Java 진영에서 사용하는 ORM(Object-Relational Mapping) 기술의 표준 사양(또는 명세, Specification)이다. 표준 사양(또는 명세)이라는 의미는 Java의 인터페이스로 사양이 정의되어 있기 때문에 JPA라는 표준 사양을 구현한 구현체는 따로 있다는 것을 의미한다. Hibernate ORM JPA 표준 사양을 구현한 구현체로는 Hibernate ..

Spring Data JDBC 기반의 도메인 엔티티 및 테이블 설계 Spring Data JDBC 기반의 데이터 액세스 계층을 연동하기 위해 우리가 제일 먼저 해야될 일은 바로 데이터베이스의 테이블과 도메인 엔티티 클래스의 설계이다. DDD(Domain Driven Design)란? DDD(Domain Driven Design)는 용어의 의미 그대로 도메인 위주의 설계 기법을 의미한다. 도메인(Domain)이란? “도메인이란 용어 자체는 한 마디로 우리가 실제로 현실 세계에서 접하는 업무의 한 영역이다” 애플리케이션 개발에서 흔하게 사용하는 도메인이란 용어는 주로 비즈니스적인 어떤 업무 영역과 관련이 있다. 예를 들어, 우리가 새로운 배달 주문 앱을 만들어야 한다면 고객과 음식점, 배달원, 그리고 카드사..