JPA 3

[JPA CRUD & JPQL] 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의 (2)

본격적으로 JPA 실습에 들어가보자. 해당 예제는 Github(링크)에 올려뒀다. (아래는 김영한님 강의인 자바 ORM 표준 JPA 프로그래밍 - 기본편에서 공부한 내용을 정리한 것입니다.) H2 데이터베이스 설치 & 실행 해당 예제를 작업하기 위해서는 H2 데이터베이스가 필요하다. H2는 실습용으로 쓰기 위한 인메모리 DB이다. 링크(클릭)를 누르면 해당 페이지로 이동할 수 있다. 우리는 1.4.199 버전을 사용할 것이니 해당 버전을 다운받도록 하자. 프로젝트 생성 이어서 프로젝트를 생성한다. IntelliJ 상단 바에서 File → New → Project를 클릭하면 아래와 같은 창이 뜬다. 우리 프로젝트 스펙은 위와 같이 설정하도록 하자. 자바 8 이상 Maven(강의에서 Maven을 이용했기에 ..

Spring Data 2023.01.05

@Transactional은 만능이 아닙니다 - 1: Transaction의 개념과 트레이드오프

Introduction 현재 작업 중인 프로젝트와 관련해 올렸던 PR에서 아래와 같은 리뷰를 받았다. Can you do it without getting @Transactional? @Transactional is not cheaper. Please think about why we use Transaction on RDBMS DB. 왜 이런 말이 나오게 됐을까? 먼저 원래 코드부터 살펴보자. 유저의 필드 중 하나인 날짜를 특정 시점으로 수정하는 API이다. 내부 코드를 공개할 수 없기에 간단한 형태로 수정했다. Code UserController @PutMapping("/user/{Id}") public void moveDateTime(@PathVariable long userId) { userSer..

Spring Data 2022.09.16

JPA & ORM이란? (Feat. NoSQL에서 ORM?)

JPA란? 자바 표준 ORM(Object Relational Mapping). ORM(Object Relational Mapping)이란? 객체(Object)와 관계형 데이터베이스(Relational DB)를 연결(mapping)해주는 놈! Why JPA? 현대 웹 애플리케이션에서 관계형 데이터베이스는 빠질 수 없는 요소. 그러다 보니 객체를 관계형 데이터베이스에서 관리하는 게 무엇보다 중요해졌다. 문제는 RDB가 웹서비스 중심이 되면서 모든 코드가 SQL 중심이 되어버렸다는 것. 현업 프로젝트 대부분이 애플리케이션 코드보다 SQL로 가득해져버린 것이다. 이는 RDB가 SQL만 인식할 수 있기 때문인데, SQL만 가능하니 각 테이블마다 기본적인 CRUD 관련 쿼리를 매번 생성해야 한다. 예를 들어 Use..

Java 2022.06.02