🏷 SQL 중심적인 개발의 문제점 SQL을 사용해 개발을 한다고 가정해보자! 기능을 추가하기 위한 테이블을 만들다 보면, 지루한 코드,,,,😅 가 반복되고 있다는 것을 스스로 느끼게 된다..^^ 객체 CRUD에 필드를 추가하는 경우를 보자! 이처럼 쿼리를 한
🏷 Hello JPA - 프로젝트 생성 IntelliJ 에서 새로운 프로젝트를 직접 만들어보자 😀 > 📌 프로젝트 생성 시 Maven 사용 프로젝트를 생성한 뒤, pom.xml 에 라이브러리를 추가하자❗️ 여기서 hibernate-entitymanager
🏷 영속성 컨텍스트 > JPA에서 가장 중요한 두가지❗️ 1️⃣ 객체와 관계형 데이터베이스 매핑하기 2️⃣ 영속성 컨텍스트 실제 JPA가 내부에서 어떻게 동작하는지는 영속성 컨텍스트를 통해 이해할 수 있다! ➡️ 엔티티 매니저 팩토리가 고객의 요청이 올때마다 앤
🏷 객체와 테이블 매핑 ✔️ 엔티티 매핑 소개 객체와 테이블 매핑 : @Entity, @Table 필드와 컬럼 매핑 : @Column 기본 키 매핑 : @Id 연관관계 매핑 : @ManyToOne, @JoinColumn ✔️ @Entity @Entity가 붙은
🏷 단방향 연관관계 🏷 양방향 연관관계와 연관관계의 주인 1 - 기본 단방향과 테이블 관계가 다를게 없다 왜? 외래키 하나로 양방향이 가능하기 때문! 사실상 테이블의 여노간관계에는 방향이라는 것이 없음 문제는 객체.. 단방향과는 다르게 팀에 List membe
🏷 다대일 [N:1] 🏷 일대다 [1:N] 🏷 일대일 [1:1] 🏷 다대다 [N:N] 🏷 실전 예제 3 - 다양한 연관관계 매핑
🏷 상속관계 매핑 ✔️ 상속관계 매핑 관계형 데이터베이스는 상속 관계가 없음 슈퍼타입, 서브타입 관계라는 모델링 기법이 객체 상속과 유사! 상속관계 매핑 : 객체의 상속과 구조와 DB의 슈퍼타입, 서브타입 관계를 매핑 슈퍼타입 서브타입 논리 모델을 실제 물리 모
🏷 프록시 이걸 왜 써야하지 🤔❓ ➡️ 멤버와 팀이 있을 때 멤버를 조회할 때 팀도 함께 조회해야 할까? ➡️ 따로 출력하고 싶을 땐 어떻게 해야 할까? ✔️ 프록시 기초 em.find() vs em.getReference() em.find() : 데이터베이
🏷 기본값 타입 ✔️ JPA의 데이터 타입 분류 1️⃣ 엔티티 타입 @Entity 로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능함 ➡️ 예) 회원 엔티티의 키나 나이값을 변경해도 식별자로 인식 가능 2️⃣ 값 타입 int, Integer, Str
🏷 소개 JPA는 다양한 쿼리 방법을 지원하고 우리는 복잡한 쿼리를 짤 줄 알아야 한다! JPQL JPA Criteria QueryDSL 네이티브 SQL JDBC API 직접 사용, MyBatis, SpringJdbcTemplate 함께 사용 등 이제 하나씩 알아
🏷 경로 표현식 경로 표현식이란, ❗️(점)을 찍어 객체 그래프를 탐색하는 것❗️ ➡️ 이와 같이 3가지로 구분되는데, 우리는 이 3가지를 구분할 줄 알아야 한다!! ✔️ 경로 표현식 용어 정리 상태 필드(state field) 단순히 값을 저장하기 위
🏷 프로젝트 생성 스프링 부트 스타터 사이트로 이동해서 프로젝트 생성 ✔️ 프로젝트 선택 Project: Gradle Project Language: Java Spring Boot: 2.5.x ✔️ Project Metadata Group: jpabook Ar
🏷 요구사항 분석 1️⃣ 회원 기능 회원 등록 회원 조회 2️⃣ 상품 기능 상품 등록 상품 수정 상품 조회 3️⃣ 주문 기능 상품 주문 주문 내역 조회 주문 취소 4️⃣ 기타 요구사항 상품은 재고 관리가 필요하다. 상품의 종류는 도서, 음반, 영화가 있다. 상
🏷 구현 요구사항 1️⃣ 회원 기능 회원 등록 회원 조회 2️⃣ 상품 기능 상품 등록 상품 수정 상품 조회 3️⃣ 주문 기능 상품 주문 주문 내역 조회 주문 취소 > 📌 예제를 단순화 하기 위해 다음 기능은 구현 X 로그인과 권한 관리 X 파라미터 검증과 예
📌 구현 기능 회원 등록 회원 목록 조회 > 📌 순서 1️⃣ 회원 엔티티 코드 다시 보기 2️⃣ 회원 리포지토리 개발 3️⃣ 회원 서비스 개발 4️⃣ 회원 기능 테스트 🏷 회원 리포지토리 개발 ✔️ MemberRepository @Repository : 스
📌 구현 기능 상품 등록 상품 목록 조회 상품 수정 > 📌 순서 1️⃣ 상품 엔티티 개발(비즈니스 로직 추가) 2️⃣ 상품 리포지토리 개발 3️⃣ 상품 서비스 개발 4️⃣ 상품 기능 테스트 (간단해서 생략함) 🏷 상품 엔티티 개발(비즈니스 로직 추가) ✔️
📌 구현 기능 상품 주문 주문 내역 조회 주문 취소 > 📌 순서 1️⃣ 주문 엔티티, 주문상품 엔티티 개발 2️⃣ 주문 리포지토리 개발 3️⃣ 주문 서비스 개발 4️⃣ 주문 검색 기능 개발 5️⃣ 주문 기능 테스트 🏷 주문, 주문상품 엔티티 개발 ✔️ Ord
🏷 홈 화면과 레이아웃 ✔️ 홈 컨트롤러 등록 ✔️ 타임리프 템플릿 등록 타임리프를 사용해 대체할 fragments/header fragments/bodyHeader fragments/footer 파일도 만들어 준다! ⬆️ 결과 화면이 뭔가 간지가 나지 않는다
🏷 상품 수정 > 상품 등록, 조회와 달리 수정은 까다로운 부분이 많으니 집중해서 듣고 확실히 이해하도록 하자😉 ✔️ 상품 수정 컨트롤러 수정 버튼을 선택하면 /items/{itemId}/edit URL을 GET 방식으로 요청 그 결과로 updateItemFo
🏷 회원 등록 API ✔️ V1 엔티티를 Request Body에 직접 매핑 - V1 MemberApiController 클래스 생성 🧐 문제점 엔티티에 프레젠테이션 계층을 위한 로직이 추가된다. 엔티티에 API 검증을 위한 로직이 들어간다. (@NotEmpt
🏷 조회용 샘플 데이터 입력 API 개발 고급 설명을 위해 샘플 데이터를 입력하자😃 userA JPA1 BOOK JPA2 BOOK userB SPRING1 BOOK SPRING2 BOOK ✔️ InitDB 클래스 생성 🏷 간단한
🏷 간단한 주문 조회 V3 : 엔티티를 DTO로 변환 - 페치 조인 최적화 ✔️ OrderSimpleApiController - 추가 ✔️ OrderRepository - 추가 코드 엔티티를 페치 조인(fetch join)을 사용해서 쿼리 1번에 조회 페치 조인
주문내역에서 추가로 주문한 상품 정보를 추가로 조회해보자🙂 Order 기준으로 컬렉션인 OrderItem 와 Item 이 필요하다! > 앞의 예제에서는 XtoOne(OneToOne, ManyToOne) 관계만 있었다. > 이번에는 컬렉션인 일대다 관계 (OneToM
🏷 주문 조회 V4 : JPA에서 DTO 직접 조회 ✔️ OrderApiController에 추가 ✔️ OrderQueryRepository 생성 ✔️ OrderQueryDto 생성 ✔️ OrderItemQueryDto 생성 쿼리 : 루트 1번, 컬렉션 N번
🏷 OSIV와 성능 최적화
🏷 스프링 데이터 JPA 스프링 데이터 JPA는 JPA를 사용할 때 지루하게 반복하는 코드를 자동화 해준다. 이미 라이브러리는 포함되어 있고, 기존의 MemberRepository 를 스프링 데이터 JPA로 변경해보자! > 참고자료 1️⃣ MemberReposi