개요 JPA라는 ORM을 사용하면 흔히 DTO와 Entity 를 분리하라는 말을 들어봤을 것이다. 왜 Entity만으로 해결하면 안될까? DTO는 무엇일까? 이번 포스팅에서는 DTO와 Entity의 개념을 정리하고 DTO는 왜사용해야 하는지, 또 어떤식으로 사용해야 하는지 알아보자. 목차 DTO vs Entity vs VO API에서 Entity 직접 사용의 문제점 Entity 대신 DTO 사용 DTO와 Entity 사이의 변환 DTO의 구조적 효과 Entity vs DTO vs VO Entity, DTO, VO는 생김새는 비슷해 보이지만 쓰임새와 목적이 분명하게 다르기에 정확하게 구분할 줄 알아야 한다. Entity 테이블 데이터를 OOP세계에서 다루기 위해 나온 테이블 데이터 모델링 클래스이자, 비즈..
개요 이번 포스팅은 JPA의 내부 구조와 동작 방식을 알아보고 사용예제를 간단하게 알아보는 포스팅이다. 이 글은 JPA를 사용하면서 DB에 데이터를 넣고 꺼내 봤는데, 어떻게 동작하는지 머리에 그려지지 않는 사람을 대상으로 했다. 목차 JPA란? 구동 방식 EntityManagerFactory와 EntityManager 영속성 컨텍스트 : 가상의 객체 DB First-Level Cache : 1차 캐시 쓰기 지연 SQL 저장소 변경 감지(Dirty Checking) 만약 엔티티 식별자 생성 전략이 자동이라면 어떻게 캐시에 넣을까? JPA 란? EJB 시절 Java에는 ORM 기술이 이미 있었다. 하지만 굉장히 불편하고 완성도도 떨어졌고, 이에 불만을 가진 개발자가 직접 만들기 시작했다. 여러 개발자가 참..
Spring Data JPA (feat. 스프링 부트와 AWS로 혼자 구현하는 웹 서비스)
2021.03.11
이번 포스팅은 '스프링 부트와 AWS로 혼자 구현하는 웹 서비스'라는 책을 읽고 책의 내용을 정리한 것입니다. 책의 장점은 저자가 경험한 것과 생각을 글로 나마 빠르게 경험할 수 있다는 것입니다. 깊이 이해 하지 못하더라도 그러한 것이 있다라는 것을 안다는 것만으로도 충분히 가치있다고 생각합니다. 더 나아가서 직접 해본다면 더더욱 이득이겠지요. 개요 웹 서비스를 개발하고 운영하다 보면 피할 수 없는 문제가 데이터베이스를 다루는 일이다. Spring Boot를 처음 배울 때 데이터베이스를 다루기 위해 SQL매퍼를 사용하여 쿼리를 작성한다. 그러다보면 한 가지 의문이 든다. 객체지향 프로그래밍 언어인 Java를 사용함에도 객체지향 프로그래밍을 못한다는 것이다. 객체지향설계를 해야하는 것을 알고 있음에도 관계..