API 개발 화면을 여전히 템플릿 엔진 등으로 만드는 경우도 많지만, Vue.js, React 등을 활용하는 경우가 늘었다. 서버 개발자 입장에서는 서버에서 렌더링하여 HTML을 통해 나타내는 것이 아닌, 화면에 대한 부분은 앱이나 프론트엔드 개발자가 담당하고 서버 개발자는 API를 통해 통신하는 경우가 늘은 것이다. JPA를 사용하게 되면 단순...
예제 프로젝트 API 개발 - 기본
학습용 JPA 프로젝트 개요 - 애플리케이션 (+ 변경감지와 병합)
이전 포스트에서 엔티티에 대한 설계에 대해 보았고, 이번에는 애플리케이션 단에 대한 부분을 본다. 기능 회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 ...
학습용 JPA 프로젝트 개요 - 엔티티
학습했던 JPA 내용에 대해 복습하고 실제 코드로 적용해보는 용도의 간단한 쇼핑 프로젝트입니다. 기능 회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내...
JPQL 문법 (*페치 조인)
경로 표현식 점(.)을 찍어 객체 그래프를 탐색하는 것 상태 필드 : 단순히 값을 저장하기 위한 필드 ex) m.username 연관 필드 : 연관관계를 위한 필드 단일 값 연관 필드 @ManyToOne, @OneToOne 대상이 ...
JPQL (JPQL 기본 문법)
JPA는 다양한 쿼리 방법을 지원한다. JPQL ** JPA Criteria 자바 코드로 쿼리를 작성하기 때문에 오류를 잡아내기 쉽다. 동적쿼리 작성이 쉽다. 하지만 코드가 복잡하고 알아보기 힘들어 유지보수 작업이 힘들다. QueryDSL ** 동적쿼리 작성에 장...
JPA 데이터 타입 - 값 타입
JPA의 데이터 타입 분류 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능하다. ex) Member 엔티티의 나이 같은 값을 변경해도 식별자로 인식 가능 값 타입 int, In...
영속성 전이(CASCADE), 고아 객체
영속성 전이(CASCADE) 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶은 경우 사용한다. ex) 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장하고 싶다. @Entity public class Parent { @Id @GeneratedValue private L...
JPA 프록시 그리고 지연 로딩
Member와 Team의 관계가 있을 때, Member를 조회하면 Team까지 함께 조회해야 할까? public void printUserAndTeam(String memberId) { Member member = em.find(Member.class, memberId); Team team = member.getTeam(); Syste...
MappedSuperclass
@MappedSuperclass 단순하게 공통된 속성을 담는 클래스를 만드는 것이다. @MappedSuperclass public abstract class BaseEntity { private Long id; private String name; //getter, setter... } @Entity public class Membe...
상속관계 매핑
상속관계 매핑 객체에는 상속이라는 개념이 있다. 하지만 관계형 데이터베이스에는 상속 관계라는 개념이 없다. 관계형 데이터베이스의 슈퍼타입 서브타입 관계라는 모델링 기법이 객체의 상속관계와 유사하다. 따라서 상속관계 매핑이란 아래와 같다. 상속관계 매핑 객체의 상속 구조와 DB의 슈퍼타입 서브타입 관계를 매핑하는 것을 의...