Tech Stack/JPA

[JPA] 2. 엔티티와 값 타입

JPA 시리즈 2편2. 엔티티와 값 타입 JPA를 처음 접하면 모든 클래스가 비슷하게 느껴집니다. 예를 들면, 회원 클래스도 있고, 주소 클래스도 있고, 주문 클래스도 있습니다. 겉보기에는 다 그냥 객체처럼 보이지만, JPA는 이들을 같은 방식으로 다루지 않습니다. 어떤 객체는 따로 관리하고, 어떤 객체는 다른 것에 붙어서 함께 움직입니다. 이 차이를 이해하기 시작하면 JPA가 점점 명확하게 다가오게 됩니다. 처음에 클래스를 설계할 때는 뭔가 다 비슷해 보입니다. 회원 정보를 위한 Member 클래스, 주소를 담는 Address 클래스, 그리고 주문을 나타내는 Order 클래스가 있죠. 자바 코드만 봐서는 전부 그냥 객체이고, 필드도 있고 생성자도 있고 값을 넣어 쓸 수 있습니다. 그래서 아마 처음엔 “..

[JPA] 1.JPA란?

JPA 시리즈 1편1. JPA란? 처음 JPA를 접하게 되면, 종종 SQL을 자동으로 만들어주는 도구라고만 여기는 경우가 많습니다. 하지만 JPA를 단순히 SQL 자동 생성 기술로만 이해한다면 곧 한계에 봉착하게 됩니다. JPA의 진짜 본질은 객체의 상태 변화와 그 관계를 데이터베이스에 어떻게 반영할 것인가에 초점이 맞춰져 있습니다. 처음 JPA를 배우면 대부분 이렇게 떠올립니다. 엔티티를 만들고 persist()를 호출하면 insert가 나가고, 값을 바꿨더니 update 쿼리가 실행된다. 이 경험 때문에 JPA를 단순히 자바 객체를 데이터베이스에 저장해주는 기술이라고만 쉽게 정의하고 넘어가기 쉽습니다.하지만 실제로 JPA의 구조와 개념은 이보다 훨씬 복잡하고 깊이가 있습니다. 예를 들어, 쿼리가 생각..