목록Spring/JPA (25)
쌩로그
목록 포스팅 개요 본론 2-1. UUID가 왜 필요한가? 2-2. UUID가 뭔데? 2-3. 코드로 살펴보기 요약 1. 포스팅 개요 해당 포스팅은 JPA 를 사용하면서 Entity 의 Id 값으로, Auto Increment가 아닌, 랜덤 문자열을 가지는 UUID로 사용하는 내용에 대한 포스팅이다. 2. 본론 2-1. UUID가 왜 필요한가? 늘 JPA를 어떤 CRUD 연습용이던가, 혹은 프로젝트를 할 때 로컬환경에서도, 배포환경에서도 MySQL의 기본 키 전략에는 Auto Increment를 적용하여, 알아서 id값이 할당받도록 하였다. 그런데 이번에 회사에서 프로젝트를 하면서 id를 Auto Increment 로만 의존하기에는 한계가 생길 것 같아 Id 깂으로 UUID의 값을 집어넣으려 한다. 예를 ..
목록 포스팅 개요 본론 2-1. Entity 노출 하지 않기 2-2. 데이터 한 번 더 감싸기 2-3. 양방향 연관관계에 있는 두 Entity 외부에 노출시 한 쪽에서 연관관계 끊기 2-4. fetch 전략은 무적권 LAZY 2-5. 엔티티 조회 2-6. 프로퍼티는 Getter, Setter를 의미 2-7. Entity를 DTO로 변환해서 반환할 때 2-8. Hibernate 6 최적화 2-9. 컬렉션 페이징 경고 원인 2-10. 페이징 한계돌파 2-11. DTO로 뽑을 때는 new Operation을 사용한다. 2-12. OSIV 2-13. 내가 고쳐야되는 것 2-14. 내가 해봐야 하는 것 요약 1. 포스팅 개요 인프런에서 영한님의 실전! 스프링 부트와 JPA 활용 2편을 학습하고 정리한 포스팅이다...
목록 포스팅 개요 본론 2-1. 생각 정리 2-2. 개념 정리 2-3. 이후에 어떻게 뭘 해볼지 요약 1. 포스팅 개요 인프런에서 영한님의 실전! 스프링 부트와 JPA 활용 1편과 책 내용을 보고 생각 정리와 개념 정리, 그리고 이후에 어떻게 뭘 해볼지에 대한 내용을 기록 한 포스팅이다. | 참고 책 내용과 강의내용의 차이점은 다음과 같다. 책 : 스프링 + Maven + JSP + JUnit4 강의 : 스프링 부트 2.1 + gradle + Thymeleaf + JUnit4 (번외로 나는 : 스프링 부트 3.x + gradle + Thymeleaf + JUnit5) 2. 본론 2-1. 생각 정리 먼저 여기서는 생각 정리도 생각 정리지만, 강의 중에 봤던 노하우와 팁, 그리고 내가 의문점을 가졌던 것, ..
포스팅 개요 포스팅 개요 본론 2-1. 객체지향 쿼리 소개 2-2. JPQL 2-3. 객체지향 쿼리 심화(일부) 요약 1. 포스팅 개요 스압에 주의하시고 , 필요한 키워드를 검색해서 보시는 걸 추천합니다. 해당 포스팅은 인프런에서 영한님의 JPA기본 강의에서 JPQL 파트와 해당 파트에 맞는 책의 챕터를 보고 학습한 내용을 요약 및 정리하는 포스팅입니다. 참고로 강의로는 Section 2개가 걸쳐이어지는 내용지만, 책으로는 1챕터로 구성되어있습니다. 본론에 3개의 부제가 있지만, 책에서는 Criteria, QueryDSL, 네이티브 SQL 등 3개의 부제가 더 있습니다. 3개 Section을 제외한 이유는 다음과 같습니다. Criteria는 강의 중 소개할 때만 잠깐 보여주고 넘어가서 제외했습니다. Qu..
포스팅 개요 포스팅 개요 본론 2-1. 기본값 타입 2-2. 임베디드 타입(복합 값 타입) 2-3. 값 타입과 불변 객체 2-4. 갑 타입의 비교 2-5. 값 타입 컬렉션 요약 1. 포스팅 개요 해당 포스팅은 인프런에서 영한님의 JPA기본 강의에서 값 타입 파트와 해당 파트에 맞는 책의 챕터를 보고 학습한 내용을 요약 및 정리하는 포스팅입니다. 2. 본론 JPA의 데이터 타입을 가장 크게 분류하면 엔티티 타입과 값 타입으로 나눌 수 있습니다. 엔티티 타입은 @Entity로 정의하는 객체고, 값 타입은 int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체를 말합니다. 엔티티 타입은 식별자를 통해 지속해서 추적할 수 있지만, 값 타입은 식별자가 없고 숫자나 문자같은 속성만..
포스팅 개요 포스팅 개요 본론 2-1. 프록시 2-2. 즉시 로딩과 지연 로딩 2-3. 지연 로딩 활용 2-4. 영속성 전이:CASCADE 2-5. 고아 객체 2-6. 영속성 전이 + 고아 객체, 생명주기 요약 1. 포스팅 개요 해당 포스팅은 인프런에서 영한님의 JPA기본 강의에서 프록시와 연관관계 관리 파트와 해당 파트에 맞는 책의 챕터를 보고 학습한 내용을 요약 및 정리하는 포스팅입니다. 2. 본론 2-1. 프록시 엔티티를 조회할 때 연관된 엔티티들이 항상 사용되는 것은 아닙니다. 회원 엔티티를 조회할 때 연관된 팀 앤티티는 비즈니스 로직에 따라 사용될 때도 있지만, 그렇지 않을 때도 있습니다. 예시를 살펴보겠습니다. @Entity // 엔티티 public class Member extends Bas..
포스팅 개요 포스팅 개요 본론 2-1. 상속 관계 매핑 2-2. @MappedSuperclass 2-3. 복합 키와 식별 관계 매핑 2-4. 조인 테이블 2-5. 엔티티 하나에 여러 테이블 매핑 요약 1. 포스팅 개요 해당 포스팅은 인프런에서 영한님의 JPA기본 강의에서 고급 매핑 파트와 해당 파트에 맞는 책의 챕터를 보고 학습한 내용을 요약 및 정리하는 포스팅입니다. 2. 본론 2-1. 상속 관계 매핑 관계형 데이터베이스에는 객체지향 언어에서 다루는 상속이라는 개념이 없습니다. 대신 슈퍼타입 서브타입 관계(Super-Type Sub-Type Relationship)이라는 모델링 기법이 상속 개념과 가장 유사합니다. ORM에서 이야기하는 상속 관계 매핑은 객체의 상속 구조와 데이터베이스의 슈퍼타입 서브타..
포스팅 개요 포스팅 개요 본론 2-1. 다대일 2-2. 일대다 2-3. 일대일(1:1) 2-4. 다대다(N:N) 요약 1. 포스팅 개요 해당 포스팅은 인프런에서 영한님의 JPA기본 강의에서 다양한 연관관계 매핑 파트와 해당 파트에 맞는 책의 챕터를 보고 학습한 내용을 요약 및 정리하는 포스팅입니다. 강의에서는 없는 내용이 있고, 개인적으로 저를 위한 포스팅이니 참고 바랍니다..ㅎㅎ 또한 이전에 있었던 내용과 본문에서 중첩되는 부분은 간단하게 언급만 하고 넘어가는 점도 참고 바라겠습니다. 그리고, 외래 키의 위치는 다중성의 관계에서 왼쪽에 해당하는 부분에 있다고 생각하고 보시면 됩니다. 예를 들어, 일대다 관계라면, 일에 해당하는 곳에 외래 키가 있습니다. 다대일 관계라면, 다에 해당하는 곳에 외래 키가 ..
목록 포스팅 개요 본론 2-1. 단방향 연관관계 2-2. 연관관계 사용 2-3. 양방향 연관관계 2-4. 연관관계의 주인 2-5. 양방향 연관관계 저장 2-6. 양방향 연관관계의 주의점 요약 1. 포스팅 개요 해당 포스팅은 인프런에서 영한님의 JPA기본 강의에서 엔티티 매핑 기초 파트와 해당 파트에 맞는 책의 챕터를 보고 학습한 내용을 요약 및 정리하는 포스팅입니다. 2. 본론 먼저 객체와 RDB의 차이를 생각해 볼 필요가 있겠습니다. 객체는 참조(주소)를 사용해서 관계를 맺지만, 테이블은 외래 키를 사용해서 관계를 맺습니다. 객체의 참조와 테이블의 외래 키를 매핑하는 것이 이번 챕터의 목표입니다. 들어가기 앞서서 세 가지의 키워드를 알아놓으시면 좋을 거 같습니다. 방향 방향은 객체 관계에만 존재하고, ..
목록 포스팅 개요 본론 2-1. 객체와 테이블 매핑 2-2. 데이터베이스 스키마 자동생성 2-3. 기본 키 매핑 2-4. 필드와 컬럼 매핑 요약 짧은 생각과 느낀 점 1. 포스팅 개요 해당 포스팅은 인프런에서 영한님의 JPA기본 강의에서 엔티티 매핑 파트와 해당 파트에 맞는 책의 챕터를 보고 학습한 내용을 요약 및 정리하는 포스팅입니다. 2. 본론 2-1. 객체와 테이블 매핑 @Entity @Entity가 붙은 클래스는 JPA가 관리하는 것으로, 엔티티라 부릅니다. 속성 name JPA에서 사용할 엔티티 이름을 지정합니다. 기본값은 클래스 이름을 사용합니다. 다른 패키지에 이름이 같은 클래스가 있다면 이름을 지정해서 충돌하지 않도록 합니다. 주의사항 기본생성자는 필수입니다. JPA는 엔티티 객체를 생성할..