월 16,940원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
FK + 상수로 이루어진 조인
A 테이블에는A테이블의 PK 가 있고 B 테이블의 경우B 테이블 ID 컬럼(PK) , A테이블의 PK 값(FK) ,A테이블의 테이블명(상수)을 갖고있는 테이블이 있을때 A테이블과 B테이블과의 관계를엔티티 연관관계를 걸때 FK+A테이블의 테이블명(상수)(B테이블에는 FK+여러테이블명(A,C,D,E ...))으로 이루어진 다수의 ROW 존재 1줄로 요약하자면 FK + 상수 가 조인 조건일때이런경우 연관관계를 맺기 위한 정석적인 해결책이 있나요? 많은 구글링을 해보았지만1.https://stackoverflow.com/questions/28818511/jpa-hibernate-join-on-constant-value (@JoinColumnOrFormula)2.https://stackoverflow.com/questions/68341956/jpa-hibernate-how-to-define-custom-join-clause-on-entity(@JoinFormula)3.https://stackoverflow.com/questions/27945738/jpa-jointable-with-extra-join-conditions(@WhereJoinTable ) 4.https://stackoverflow.com/questions/30571450/jpa-many-to-one-with-constant-values-in-referenced-table@Where(clause=상수)5.혹은 연관관계를 맺지않고 별도쿼리로 처리 등등을 찾아보았지만맞는 방법이 무엇인지 잘 모르겠습니다.
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
연관관계의 주인에 대해서 질문드립니다.
연관관계의 주인을 보통 N쪽으로 하잖아요?강의 예시대로라면 Member.team이 연관관계의 주인이 되는 거 같은데 한 가지 헷갈리는 것이 있어 질문드립니다.연관관계의 주인이 Member가 되는 것인가요 아니면 Member에 있는 Team team 이 부분이 되는 것인가요?만약 Member에 있는 Team team 이 부분이 연관관계의 주인이면 Team 객체 자체가 주인이 된다고 봐야하는 것인가요?이 부분이 계속 헷갈리네요 ㅠㅠ
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
JPQL inner join에서 Team을 LAZY로 설정해도 같은 이슈발생에 대해서 문의드립니다.
안녕하세요 김영한님!좋은 강의 제공해주셔서 진심으로 감사합니다.다름이아니라 JPQL inner join으로 Member, Team 조인했을 때 inner join에서 추가로 team select 쿼리가 나가는 부분에서 이슈가 있어서 문의드리게 되었습니다.저는 kotlin으로 강의내용 코드를 작성해서 공부하고 있는데요.val resultList = em.createQuery("select m from Member m join m.team t", Member::class.java) .resultList강의내용대로 inner join JPQL 작성했고 Member Entity는@ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "team_id") var team: Team? = null이렇게 LAZY로 설정하고 코드 실행했는데 team select 쿼리가 여전히 inner join 쿼리 이후에 추가로 실행되고 있었는데요.혹시 어디 부분에서 이런 상황이 계속 발생하는지 알 수 있을까요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
영속성 컨텍스트 구현체에서 '쓰기 지연 SQL 저장소', '1차 캐시'와 관련된 필드를 확인할 수 있을까요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)<질문>하이버네이트 영속성 컨텍스트 구현체에서 '쓰기 지연 SQL 저장소', '1차 캐시'와 관련된 필드를 확인할 수 있을까요?영속성 컨텍스트에서 '쓰기 지연 SQL 저장소'와 '1차 캐시'가 어떻게 작동하는지 이해하는게 중요한것 같아서 영속성 컨텍스트 구현 클래스에서 SQL 저장소나 1차 캐시와 관련된 필드가 어떻게 생겼는지 확인하고, 엔티티매니저의 여러 메서드가 실행될 때 해당 필드들이 강의에서 배운 것처럼 변화하는지 확인하고자 했습니다.<궁금한 정보>하이버네이트 영속성 컨텍스트 구현 클래스의 필드 중 'SQL 저장소'나 '1차 캐시'의 역할을 하는 필드가 무엇인지Entity Manager의 CRUD 메서드나 flush() 등 실행시 SQL 저장소, 1차 캐시 필드의 변화 확인em.persist()em.find()em.remove()em.flush()Ex)em.persist(member)>>> 1차 캐시 필드에 member 엔티티 스냅샷이 저장 됐는지 확인>>> 쓰기 지연 SQL 저장소 필드에 member insert 쿼리가 생성됐는지 확인em.find(member2)>>> 1차 캐시 필드에 저장되지 않은 엔티티 조회시 DB에서 해당 엔티티 조회해서 1차 캐시에 저장하는지 확인em.flush()>>> 1차 캐시의 스냅샷과 현재 member엔티티와 비교하는 과정 확인>>> 변경 있다면 SQL 저장소 필드에 Update 쿼리 추가됨>>> 쓰기 지연 SQL 저장소 필드에 저장된 쿼리들 DB로 내보내는 과정 확인<조사 결과>아래처럼 영속성 컨텍스트 구현 클래스의 필드들 중 'SQL 저장소'나 '1차 캐시'의 역할을 하는 필드가 있을것이라고 가정하고 우선 해당 필드를 찾으려고 했습니다.1차 캐시entitiesByKey 필드에 엔티티가 저장돼서 해당 필드가 1차 캐시에 해당할수도 있겠다고 생각했는데엔티티 정보가 snapshot 처럼 저장된 것이 아니라 인스턴스 자체가 저장된 것이라서 1차 캐시가 아니라고 생각했습니다. 쓰기 지연 SQL 저장소SQL 쿼리가 String으로 저장된 필드 찾지 못함SingleTableEntityPersister 인스턴스에 엔티티 CRUD 쿼리 저장되는것 확인했지만,스프링부트 실행할 때 만들어지는 인스턴스기 때문에 쓰기 지연 SQL 저장소는 아니라고 생각했습니다.쓰기지연 SQL 저장소라면 em.persist() 실행시에 insert 쿼리가 만들어져야하기 때문에 (스프링부트 실행시점에 만들어지는 것이 아니라)결론적으로 영속성 컨텍스트 인스턴스에서 1차 캐시나 쓰기 지연 SQL 저장소에 해당되는 필드를 확인하지 못했습니다.디버거에서 entityManager.flush() persist() 등의 메서드 흐름을 쭉 따라가면서 전달되는 데이터를 보면서 1차 캐시나 SQL 저장소를 찾아보려고 했는데, 메서드 실행 과정이 너무 복잡해서 흐름을 따라가기가 어려웠습니다.<질문>영속성 컨텍스트 구현체에서 '쓰기 지연 SQL 저장소', '1차 캐시'와 관련된 필드를 확인할 수 있을까요?아니면 '1차 캐시'나 '쓰기 지연 SQL 저장소' 같은 개념들은 영속성 컨텍스트의 복잡한 작동을 추상화한 개념이라 실제 인스턴스에서 그 작동과정을 정확하게 확인하기는 어려울까요?스프링 강의에서부터 복잡한 개념은 위와 같은 방법처럼 인텔리제이 디버거에서 메서드 흐름에 따라서 주요 인스턴스 필드의 데이터가 어떻게 변하는지 확인하면서 이해가 잘 됐었습니다. JPA에서 중요한 부분도 이렇게 확인해보고자 했는데 위처럼 확인이 어려웠습니다. 그래서 이부분은 그냥 설명해주신 내용을 개념적으로 이해하고 넘어가야할지 고민입니다. ** 좋은 강의와 책 항상 감사드립니다.
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
동시성 문제
entitymanger를 proxy기술로 실제 호출시 실제 객체를 매핑한다는 것은 이해하였습니다.여기서 thread safe하다는 것은 제가 이해하기로는 "thread간에 entitymanger를 공유하지 않아 영속성 컨텍스트가 다른 thread에 의해 침범될 일이 없다" 입니다.하지만 이해가 되지 않는 부분은 동시성 문제를 해결할 수 있다는 부분입니다.동시성 문제를 해결한다는게 race condition 문제를 해결할 수 있다는 말일까요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
실전 예제4 - 상속관계 매핑 13:20 새로 질문합니다.
스프링으로 새로 프로젝트 만들었습니다.영상에서 나오는 환경과 똑같이 따라했고요.현재 테이블 생성과 인서트 쿼리가 나오질 않고 있습니다ㅜㅜ 깃허브 링크입니다.https://github.com/InSuChoe/jpashop_test
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
객체.getXXXList().add(this) 관련
안녕하세요 스프링 1년정도 공부하고 출시까지 해본 수강생입니다.새로운 프로젝트 진행중에 의문이생겼는데 하단 사진보시면,일반적으로 객체의 컬럼들을 디비에 저장해서 프로그램이 종료되더라도 그 정보가 남아있는데, 하단 네모칸의 user.getProductSellList().add(this); -> User의 List<ProductSell>에 해당 객체가 추가될텐데.따로 디비에 저장하지 않고도 어떻게 프로그램 재실행시에 해당 리스트가 보존되어 있는건가요?user를 불러올때 최적화로 인해 2번째 사진처럼 불러옵니다. 이때 어떻게 List<ProductSell>이 보존되어 있는지 궁금하네요(스프링의 어떤기능으로 보존되어있는지)너무 당연하게 생각하다가 질문드립니다 감사합니다.
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
임베디드 타입의 중첩
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (아니오)[질문 내용]@AttributeOverrides를 사용해 집주소, 회사주소를 정의할 때 이 방법에는 주소 엔티티를 따로 설계하는 것이 좋은 방법일까요? 아님 강의처럼 하는 것이 좋은 방법인가요 ?저는 뭔가 데이터베이스에 컬럼들이 낭비가 될지도 모르겠다는 생각이 들어서 차라리 엔티티로 분리하여 연관관계를 설정해주는게 더 좋을 것 같아서요.
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
실전 예제4 - 상속관계 매핑 13:20
상속관계 매핑 13:20 질문합니다.데이터가 인서트 되지 않습니다.한번 봐줄수 있을까요?https://github.com/InSuChoe/jpa
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
자바 ORM 표준 JPA 프로그래밍 - 기본편 / 상속관계 매핑 / 11:20초
하이버네이트가 테이블을 생성해주질 않습니다.깃 클론 링크 남깁니다.git@github.com:InSuChoe/jpa.git
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
엔티티마다 리포지토리를 생성하는 게 맞을까요?
간단한 게시판을 만들어보면서 Jpa를 학습하고 있습니다.Member, Post, LikedPost 엔티티는 이렇게 3개로 구성되어 있고 각각의 코드는 아래와 같습니다.Member@Entity public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private String email; @OneToMany(mappedBy = "member") private List<Post> posts = new ArrayList<>(); @OneToMany(mappedBy = "member") private List<LikedPost> likedPosts = new ArrayList<>(); @Builder public Member(String name, String email) { this.name = name; this.email = email; } }Post@Entity public class Post { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @ManyToOne @JoinColumn(name = "MEMBER_ID") private Member member; private String title; @Lob private String content; @Builder public Post(Member member, String title, String content) { this.member = member; this.title = title; this.content = content; if (!member.getPosts().contains(this)) { member.getPosts().add(this); } } }LikedPost@Entity public class LikedPost { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @ManyToOne @JoinColumn(name = "MEMBER_ID") private Member member; @ManyToOne @JoinColumn(name = "POST_ID") private Post post; @Builder public LikedPost(Member member, Post post) { this.member = member; this.post = post; if (!member.getLikedPosts().contains(this)) { member.getLikedPosts().add(this); } } } 여기서 제가 했던 고민은 LikedPost를 리포지토리를 만들어서 관리해야 하는지 아니면 그냥 PostRepository에서 관리해야 하는지였습니다.사실 LikedPost 자체는 비즈니스 로직이 있는 것도 아니고 단지 회원별로 좋아요를 누른 게시글을 탐색하기 위한 중간 테이블이기 때문에 굳이 개별적으로 리포지토리를 만들어야 하나 생각이 들었습니다.이런 경우에는 어떻게 구조를 가져가는 것이 좋을까요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
강의 39분 00초 ~ 15초: Address 저장 관련 문의
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음저와 비슷한 질문이 있는지 찾아보았는데, 없는 것 같아서 질문 드립니다. 혹시, 이미 질문 내용에 있는 것이라면 죄송합니다.제가 완전 초보여서, 강의 내용에 대한 이해가 부족해서 드린 엉뚱한 질문이라면 죄송합니다.강의 39분 00초 ~ 15초 사이의 h2DB 화면입니다.위와 같이 AddressEntity 를 이용해서 주소를 저장하면, 조인된 멤버 id 의 주소도 함께 변해야 하는 것이 아닌가요? 제가 잘못 알고 있는 걸까요 ㅠㅠ
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
jpql flush 자동 호출
jpql flush 자동 호출되는 것이 커밋까지 된다는 말씀이실까요?jpql 로 db 에서 데이터를 조회하려면 db 에 반영이 되어야할 것 같아서입니다.
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
동일한 id 값으로 엔티티를 persist하면 에러가 발생하지 않는 이유는 무엇인가요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]아래와 같이 코드를 작성했을 때 왜 DB에 삽입도 안되고 Insert 쿼리가 생성되지 않는지 궁금합니다. DB에 id가 150인 칼럼이 저장되어 있지 않은 상태에서 아래 코드를 실행했습니다. EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); Member member1 = new Member(); member1.setId(150L); member1.setName("HelloJPA"); Member member2 = new Member(); member2.setId(150L); member2.setName("HelloJPA"); em.persist(member1); em.persist(member2); tx.commit(); 영한 님의 강의 대로라면 어쨌든 insert 문은 두 개가 생성이 되고, 트랜잭션이 commit 되면서 insert 쿼리가 DB로 날아가 PK Violation 등의 에러가 발생해야 할 것 같은데 그렇지 않은 이유가 궁금합니다. 아래와 같이 Member 객체를 하나만 생성해 저장하면 문제 없이 insert 쿼리가 날아가고 DB에도 정상적으로 저장됩니다.EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); Member member3 = new Member(); member1.setId(151L); member1.setName("HelloJPA"); em.persist(member3); tx.commit();
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
프록시 객체에 대해 질문이 잇습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요. 프록시 강의를 보고 궁금한게 생겨 질문드립니다. 먼저 member객체를 생성하고 member.setUserName("hello");로 이름을 설정하고 persist(member); 하시고 바로 flush를 하셨습니다. 이후에 em.getReference(Member.class, member.getId());를 하시고 getId와 getUserName을 하실때 getId는 이미 getReference를 할때 getId(이미 있는 값이라 하셨습니다)를 사용해서 db에서 조회할 일이 없었다 라고 하셨고 getUserName은 db에서 조회해야한다 라고 하셨었는데 처음에 member객체에서 setUserName으로 값을 넣어주었고 id도 generatedValue로 값이 자동으로 설정되어서 2개의 값이 flush하기 전에 세팅이 되었는데 왜 id는 조회할때 이미 있는값이라 select문이 안나가고 userName은 값이 없어 select문이 나간건지 궁금합니다(설명을 잘 못해서 죄송합니다 ㅜ... 이해가 잘 안간탓에... 답변 해주시면 감사하겠습니다)
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
둘다 외래키인 테이블은 서로 JPA로는 조인을 할 수 없나요?
강의에서는 프라이머리 키와 외래키 간의 테이블에서만 조인을 하시는데외래키테이블1과 외래키테이블2인 테이블 끼리는 서로 조인을 할 수 없나요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
동일한 PK값을 갖는 서로 다른 Entity를 각각 persist할 경우...
안녕하세요,약간 이상한 질문일 수 있지만 명확히 짚고 넘어가고 싶어 질문 글을 작성합니다.현재 아래와 같이 아주 단순한 Member 엔티티가 있습니다.@Entity(name = "Member") @Table(name = "Member") public class Member { @Id private Long memberId; private String memberName; public Long getMemberId() { return memberId; } public void setMemberId(Long memberId) { this.memberId = memberId; } public String getMemberName() { return memberName; } public void setMemberName(String memberName) { this.memberName = memberName; } } 테스트를 위해 memberId (PK)를 자동 할당하지 않고 직접 할당하였습니다.public class JpaMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try { Member member1 = new Member(); member1.setMemberId(1L); member1.setMemberName("helloJPA"); em.persist(member1); Member member2 = new Member(); member2.setMemberId(1L); member2.setMemberName("helloJPA"); em.persist(member2); tx.commit(); } catch (Exception e) { tx.rollback(); } finally { em.close(); emf.close(); } } }위 메인 메서드의 실행 순서를 보면,변수이름 member1을 선언하여 PK값(1L)과 setMemberName 메서드를 호출하여 이름을 설정해주고 영속성 컨텍스트에 저장하였습니다.변수이름 member2를 선언하여 PK값(1L)과 setMemberName 메서드를 호출하여 이름을 설정해주고 영속성 컨텍스트에 저장하였습니다.member1 엔티티와 member2 엔티티는 PK값이 동일합니다. 하지만 member1 엔티티가 먼저 영속성 컨텍스트에 저장됐기 때문에 1L의 PK값을 가진 member1 엔티티가 먼저 영속 상태가 됐을 것입니다.개발자의 실수로 인해 member1과 동일한 PK값을 가진 member2 엔티티를 동일한 영속성 컨텍스트에 영속화 시켰습니다.이 부분에서 질문입니다. 위 상황에서 main 메서드를 실행했을 시 먼저 영속화된 member1 엔티티의 Insert 쿼리가 아예 실행되지 않습니다. (어떠한 Insert 쿼리 자체가 실행되지 않습니다.)데이터베이스에는 아무런 데이터가 저장되어 있지 않습니다. Intellij 콘솔을 확인해봐도 오류/경고나 예외가 발생되지 않았습니다.동일한 PK 값을 가진 서로 다른 두 개의 인스턴스(엔티티)를 동일한 영속성 컨텍스트에 저장했을 때 어떤 이유에서 오류나 예외가 발생하지 않고 Insert 쿼리 자체도 실행이 안 되는 것인지 궁금합니다.긴 질문 글 읽어주셔서 감사드립니다.
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
다대일에서 조인과 그렇지 않은 상황에서의 속도 차이
안녕하세요 JPA 강좌를 잘 수강하고 있는 와중에 궁금한 점이 생겨서 질문올립니다. 먼저 궁금한 것은 다대일에서 조인입니다. @Entity @AllArgsConstructor @NoArgsConstructor @Getter @Builder public class Category implements Serializable{ @Id @GeneratedValue private Long id; private String name; @OneToMany(mappedBy = "category", cascade = CascadeType.PERSIST) private List<Product> products = new ArrayList<>(); public void addProducts(Product product) { products.add(product); product.setCategory(this); } }@Entity @Getter @Builder @AllArgsConstructor @NoArgsConstructor public class Product implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private Integer price; @ManyToOne @JoinColumn(name="category_id") private Category category; public void update(Product source) { this.name = source.getName(); this.price = source.getPrice(); } public void setCategory(Category category) { this.category = category; } } 위와 같은 예제 코드 상황에서Product의 입장에서 findById를 하게 되면 @JoinColumn어노테이션이 붙어서 자연스럽게 join한 쿼리가 날라가게 됩니다. 하지만 findByCategoryName 메서드를 실행하면 조인 쿼리가 아니라 select p from Product p where p.category.name = ?1이런 where절 쿼리, 즉 natural join 쿼리가 발생하는데요, JPA에서 자동으로 조인을 하지 않고 기본 SQL순서인from -> where -> select 으로 진행될텐데, select p from Product p left join category c on p.category_id = c.id where c.name = ?1 와 속도 측면에서 얼마나 차이가 나는지 궁금합니다.(레코드 수에 따라 다르겠지만)
- 해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
JPQL실행 후 캐시의 엔티티에는 변경사항이 적용이 안 되는 건가요?
[질문 내용]강의를 보다가 의문이 생겨서 질문드립니다!JPQL을 수행하면 자동으로 flush된다고 하셨는데,이 때 캐시의 엔티티는 그대로 보존이 된다면만약에 JPQL이 UPDATE쿼리일 경우 엔티티의 변경 없이 단순 쿼리로만 UPDATE를 수행하고 DB에 반영이 될 경우에는 다시 조회를 해도 캐시에 있는 변경되지 않은 엔티티를 반환하기 때문에 변경된 내용이 적용이 안 되지 않나요?개인적으로 궁금해서 조금 실험해 본 결과로는 JPQL을 통한 데이터 변경 시 flush는 되지만 캐시의 엔티티에 변경사항이 적용되지는 않는 것 같았습니다. 하지만 이렇게 되면, 자신이 변경한 사항을 자신이 볼 수 없는 경우의 수가 생기는 것 아닌가요? 이 부분은 JPA의 특징이라 실제로도 조심해야 하는 부분 중에 하나일까요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
엔티티 내 특정 필드 지연 로딩
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]안녕하세요.지연 로딩 관련하여 문의 드릴 것이 있습니다! 강의에서는 지연 로딩 관련된 내용은 연관 관계에 있는 엔티티를 조회 하는 경우를 주로 다뤄주셨는데,동일한 엔티티 내 특정 필드만 지연 로딩하는 경우는 일반적으로 어떻게 처리하는지 궁금합니다!(엔티티를 추가로 만드는 방법도 생각했는데 지연 로딩을 위해 필드만 별도의 테이블과 엔티티를 만드는게 맞는지 의구심이 듭니다) 참고로, 특정 필드를 지연 로딩을 고려한 이유는 데이터 사이즈가 크고(LOB), 수시로 조회하는 필드가 아니라 그렇습니다.