자주 사용되는 lombok, 주의 사항

@Getter, @Setter

: 말그대로 getter, setter method를 생성해주는 놈이야!

AccessLevel을 명시해줌으로써 접근제한자를 지정 해 줄 수 있어.

Read more
앤티티 매핑(매핑 어노테이션 정리) 정리

객체와 테이블 매핑 관련 어노테이션

객체와 테이블 매핑에 대해 먼저 알아보자!

@Entity

  • @Entity가 붙은 클래스는 jpa가 관리하는 녀석이고 엔티티라고 한다.
  • JPA를 사용해서 테이플과 매핑할
  • name이라는 속성을 지정해 줄 수 있는데 이는 jpa에서 사용할 엔티티 이름이구 기본값은 클래스 이름을 그대로 사용해! (왠만하면 기본값을 사용)
Read more
Saga Pattern이란?(Orchestration and Choreography)

2-Phase Commit

우선 먼저 MSA구조 이전에는 분산 데이터베이스에 대해 어떻게 트랜잭션을 만족시켰는지 보자!!

이때는 2-Phase Commit이라는 방법을 사용했어!!

참고로 사용하는 데이터베이스가 분산 트랜젝션을 지원해야 사용할 수 있는 방법이야!! (같은 종류의 데이터베이스이어야 하기에 MSA구조에는 적합하지 않겠지)

Read more
MSA와 API GATEWAY의 개념

Monolitich Architecture

먼저 MSA를 알기위해서는 모노리틱 아키텍쳐를 알아야해!!

모노티릭 아키텍쳐란?

기존의 전통적인 웹 시스템 개발 스타일이고 하나의 어플리케이션 내에 모든 로직들이 모두~ 들어가있는 그런 통짜구조라고 생각하면 돼.

Read more
다형성과 SOLID, 그리고 Spring

다형성(Polymorphism)


다형성은 객체지향의 특징 중 하나이다!
쉽게 말해 하나의 객체가 여러가지 타입을 가질 수 있는 것을 의미해.

딱 위의 개념을 자바 문법에 대입해 보면 한가지 떠오르는 놈이 있지! 바로~ 부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조하는 것!! 또는 인터페이스로 그 구현체를 참조하는 것!!

실세계와 객체 지향이 완전히 1:1로 매칭이 되는 것은 아니나 역할과 구현을 분리해서 생각하면 실세계를 통해 다형성을 이해하기 수월해!!

한가지 예를 들어볼게!!

Read more
API Composition vs CQRS Pattern

API Composition과 CQRS 등장배경

마이크로서비스로 전체 구성을 하였다고 가정을 해보자!
특정 서비스를 제공하는 녀석을 A라고 가정해본닷. 그리고 A로 전달된 클라이언트의 request를 처리하기 위해서는 A친구는 다른 마이크로서비스 B,C,D에서 제공하는 정보를 조합해서 클라이언트에게 최종적인 결과를 주어야한닷

이때, 이 상황에서 사용할 수 있는 방법이 2가지 존재해!!

바로~ API Composition과 CQRS야!!

Read more
CQRS 패턴이란?

CQRS란

CQRS는 Command Query Responsibility Segregation 의 약자이다!
명령 조회 책임 분리 패턴이라는 의미 그대로 받아들이면 제일 좋을 것 같다!!
잠깐, 여기서 Command(명령)은 데이터의 변화를 주는 입력, 수정, 삭제 관련 작업들이라 볼 수 있고 Query는 조회와 관련된 작업이라 보면 된다! 즉 시스템 상태를 변경하냐 마냐의 유무라고 생각하면 될 것 같넹

Read more
영속성 컨택스트(Persistence Context)란?

영속성 컨텍스트란

JPA에서 가장 중요한 것을 두가지 뽑으라면 객체와 관계형 데이터베이스의 매핑과 영속성 컨텍스트를 뽑을 수 있을 것 같다!!

EntityManager는 요청마다 생겨서 database에 대한 connection을 얻은 후 database에 필요한 작업을 한다!!

이때 EntityManager 객체 em에 대해 em.persist()를 하면 database에 insert가 된다고 생각을 하고있으나

Read more
JPA는 왜 등장했는가?

JPA 등장배경

JPA가 등장하게 된 배경이 무엇일까??
객체를 관계형 데이터베이스에 저장하기 위해서는 중간에서 변환해주는 작업이 필요해!!

WHY?

객체와 관계형 데이터베이스간에는 해소하지 못하는 차이점이 존재해!!

Read more
JPA의 사용방법에 대해

데이터베이스 방언

jpa 사용법을 이야기하기에 앞서 좋은 점 하나를 끄적이고 시작하겠다 이말이야~

데이터베이스에는 방언이라는 놈이 존재해!!

그게 뭐신디!? 각각의 데이터베이스가 제공하는 SQL문법과 함수는 조금씩 달라!! (가변문자를 보면 MYSQL : VARCHAR, ORACLE : VARCHAR2)

이처럼 SQL 표준을 지키지 않은 특정 데이터베이스만의 고유한 기능을 방언이라고 하는데 JPA는 이에 종속적이지 않아!!

Read more