월 16,940원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
강의와 관련있는 내용은 아니지만 자동으로 적합한 타입을 찾아주는 방법이 궁금합니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의내용에 관한 질문은 아닙니다만강사님 강의를 쭉보면서 궁금했던 것입니다.강사님은 사진처럼 어떻게 적합한 타입을 자동으로 찾아주는지 궁급합니다. 맵핑할때도 자동으로 찾아주던데 궁금합니다.
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
hibernate.hbm2ddl.auto가 안먹어요
안녕하세요.hibernate.hbm2ddl.auto가 처음에는 create 가 잘 작동했습니다. 그런데 table 생성되고 난 뒤 update 로 age 필드 추가 시도했는데 alter문이 실행되지 않고 필드 추가가 일어나지 않아서 테이블는 당연히 생성되지 않았는데 그 이후로 select 문에서는 추가된 필드 age가 조회되는 걸 확인 할 수 있었어요. 이상해서 validation 처리하니, 다음[1]과 같이 에러가 났구요. create 로 변경 후 다시 실행하려고 하니 drop 도 안되고 여전히 동일한 select만 실행됩니다. 인텔리제이를 껐다 다시 켜도 동일합니다. 어떻게 처리하면 좋을까요 ? main.classpackage jpaBasic; import javax.persistence.*; import java.util.List; public class Main { public static void main(String[] args) { //EntityMangerFactory 객체 : 웹 서비스 당 한개 생성하는 개념, 디비당 한개 생성 EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); //EntityManager 객체 : 고객 요청이 들어올 때 사용 했다가 사용 후 삭제 ( 1회성 ) EntityManager em = emf.createEntityManager(); //EntityTransaction 객체 : jpa 데이터 변경은 무조건 트랜잭션 안에서 실행 해야 한다. EntityTransaction tx = em.getTransaction(); tx.begin(); try{ // Jpql : jpa에서 지원하는 객체 지향 SQL // 일반 쿼리문과 비슷하지만 조회하는 대상이 테이블이 아닌 Member 의 객체를 조회 한다. List<Member> results = em.createQuery("select m from Member as m", Member.class) .getResultList(); for (Member member : results){ System.out.println("member.id " + member.getId()); System.out.println("member.name " + member.getName()); } tx.commit(); }catch (Exception e){ tx.rollback(); }finally { em.close(); } emf.close(); } }member.class package jpaBasic; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity public class Member { @Id private Long id; @Column(name="USER_NM", unique = true, length = 10) private String name ; private int age ; public Member() { } public Member(Long id, String name) { this.id = id; this.name = name; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } pesistence.xml<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd"> <persistence-unit name="hello"> <properties> <!-- 필수 속성 --> <property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/> <property name="javax.persistence.jdbc.user" value="sa"/> <property name="javax.persistence.jdbc.password" value=""/> <property name="javax.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/~/jpashop"/> <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/> <!-- 옵션 --> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.format_sql" value="true"/> <property name="hibernate.use_sql_comments" value="true"/> <property name="hibernate.hbm2ddl.auto" value="update" /> </properties> </persistence-unit> </persistence>[1] Exception in thread "main" javax.persistence.PersistenceException: [PersistenceUnit: hello] Unable to build Hibernate SessionFactory at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:1016) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:942) at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:56) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) at jpaBasic.Main.main(Main.java:9) Caused by: java.lang.IllegalArgumentException: Unrecognized legacy `hibernate.hbm2ddl.auto` value : validation at org.hibernate.tool.schema.Action.interpretHbm2ddlSetting(Action.java:181) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator$ActionGrouping.interpret(SchemaManagementToolCoordinator.java:489) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:52) at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:310) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:467) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:939) ... 4 more
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
h2데이터베이스 연결
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]내부 커넥션풀이 이상하다고 에러가 뜨는거 같은데 (jpa Main 실행시킴)어디가 잘못된건가요ㅠㅠ연결은 되는데 jpa로 생성한 테이블들이 생성이 안됩니다 ㅠ
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
11:50초 질문 입니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]@OneToMany 어노테이션 사용시 new ArrayList<>(); 를 관례상 쓰는 이유 외에도 다양한 장점들에 대해 자세히 알 수 있을까요? 감사합니다.
- 해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
jpa 프로그래밍 -기본편 섹션4_실전 예제1 강의 질문
jpa 프로그래밍 기본편 강의 질문으로 localdatetime이 빨간줄이 계속 나는데 문제가 뭘까요?파일 공유 하겠습니다.https://drive.google.com/drive/folders/1RGt1WO-WGyNj029uUambw0K1efMINqwl?usp=sharing
- 해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
PersistantBag으로 감싸는 이유가 이게 맞을까요?
일대다 관계에서 List<Member> members= new ArrayList<>();getMembers라고 조회하면 프록시 객체가 아니라 PersistantBag으로 감싸고 안에 회원 한명을 조회하던 여러명을 조회던 그때 참조하는 Member를 전부 가져오고 거기서 꺼내서 주는거같아요. 이렇게 하는 이유는 연관관계 주인이 대상테이블에 있기 때문이라고 이해를 했습니다. 주테이블에 연관관계 주인으로 설정한다고 해도 데이터베이스 테이블 구조는 다 쪽에 외래키 칼럼이 있기 때문에일 쪽에서는 자신을 참조하는 테이블 레코드를 알수 없기때문에 (조회를 하건,수정을하건,삭제를 해야 그때 조회하는걸로 알고 있습니다.)지연 로딩이 불가능하고 즉시로딩이 되는거같은데 이렇게 이해하는게 맞을까요?
- 해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
[SpringBoot 3.2.0]SequenceGenerator 에러 발생
현재 Spring Boot 3.2.0에서 h2 database 2.1.214를 사용하더라도 문제가 발생합니다.SequenceGenerator를 allocationSize 1보다 큰 값으로 설정할 경우 에러가 발생합니다.package hellojpa; import jakarta.persistence.*; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @Getter @Setter @NoArgsConstructor @Entity @SequenceGenerator( name = "MEMBER_SEQ_GENERATOR", sequenceName = "MEMBER_SEQ", initialValue = 1, allocationSize = 50 ) public class Member { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "MEMBER_SEQ_GENERATOR") private Long id; @Column(name = "name", nullable = false) private String username; }현재 h2 버전을 2.2.222로 변경한 결과 정상적으로 동작합니다.다들 참고 부탁드립니다.
- 해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
Distinct 와 Set 사용에 대해서 질문이 있습니다.
일대다 관계에서 컬렉션을 조회하면 조회 결과 테이블을 엔티티에 매핑하다보니 JPA는 그대로 중복된 객체를 반환한다고 이해를 했습니다. 그런데 중복을 제거하기 위해서 Distinct 연산자를 붙이면 쿼리에도 Distinct가 들어가면서 SQL이 실행이 되는데요 영속성 컨택스트에서 같은 식별자를 가진 엔티티는 동일성을 보장하니까 불필요한 SQL이 포함된 Distinct보다HashSet<>으로 중복을 제거하는 방법은 별로일까요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
@Column 관련 질문이요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.실전 예제에서 추가된 카테고리랑 딜리버리에 @Column이 추가되지 않은 이유는 DB Table까지는 사용하지 않을 거여서라고 생각하면 될까요?Order나 Member에는 @Column이 있는데 다른 곳은 또 @Column이 없고.. 어디서 어떻게 써야할지 확신이 안갑니다 ㅜ
- 해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
처음 JPA 프로젝트 생성하기 오류 입니다 ..
제가 여러번 생성 해봤는데 계속 저렇게 에러가 뜨는데 어떤 잘못인지 잘 모르겠습니다 .. ㅠ
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
<property name="hibernate.hbm2ddl.auto" value="update"/>
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. <property name="hibernate.hbm2ddl.auto" value="update"/>create / create-drop 은 잘 됩니다. 하지만 update는 이상한점을 발견을 했습니다. 이유를 알고 싶어서 이런 질문 드립니다.update를 value에 작성을 한뒤에 Member class 에서 A - private int age x B - private Integer o 위 와 같이 작성을 하고 나서 실행을 해보면 A는 오류가 발생하지만 B는 정상적으로 작동이 됩니다.이유를 알려주세요.
- 해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
최신 프로젝트(spring boot 3버전)로 생성하는 법
프로젝트는 spring initializr를 사용해서 만들어서h2 database, spring data jpa(hibernate)를 추가했습니다.persistence.xml도 jakarta로 수정해서 사용했습니다.
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
준영속 상태와 비영속 상태의 차이점
[질문 내용]준영속 상태와 비영속 상태의 차이점에 대해 이해한바는 다음과 같습니다. 비영속 상태 : 한번도 엔티티 매니저의 관리를 받아본적 없는 엔티티준영속 상태 : 엔티티 매니저의 관리를 받다가 연결을 끊음으로써 더이상 관리 받지 않고있는 상태. 제가 아는 차이점은 이것 뿐인데 혹시나 이게 두 상태의 차이점의 전부라면 굳이 상태를 나눌 필요가 있나? 라는 생각이듭니다. 그냥 '준영속 상태' 라는 단계를 없애고 연결이 끊기면 비영속 상태로 ,다시 연결을 맺으면 영속 상태로 이렇게 단계를 줄여도 되지 않을까요? 혹시나 제가 모르거나 잘못이해하고 있는점이 있다면 알려주시면 감사드리겠습니다!!
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
IO Exception: "/Users/eulyoungjung/test.mv.db" [90028-224] 90028/90028 (Help)
test.mv.db 를 직접 생성 하여 했는데도 연결이 되지 않습니다 ... 빠른답변 부탁드려요 !!
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
@MapsId 에서 cascade가 기본옵션인가요?
@Entity @Getter @Setter public class Board { @Id @GeneratedValue private Long id; private String title; @OneToOne(mappedBy = "board") private BoardDetail boardDetail; } @Entity @Getter @Setter public class BoardDetail { @Id private Long boardId; @MapsId // BoardDetail.boardId와 매핑 @OneToOne @JoinColumn(name = "board_id") public Board board; private String content; } public class OneToOne { private EntityManager em; private static final EntityManagerFactory emf = Persistence.createEntityManagerFactory("non"); @BeforeEach void setUp(){ em = emf.createEntityManager(); } @AfterAll static void finish(){ emf.close(); } @DisplayName("1:1 식별 매핑일 경우 ") @Test void t1(){ EntityTransaction tx = em.getTransaction(); tx.begin(); Board board = new Board(); board.setTitle("T1 4번째 월즈 우승"); BoardDetail boardDetail = new BoardDetail(); boardDetail.setContent("상혁아 축하해"); boardDetail.setBoard(board); em.persist(boardDetail); tx.commit(); } }여기서 제가 부모 테이블인 board를 저장하지 않고 바로 boardDetail만 저장했습니다.cascade옵션을 주지 않았는데도 부모 테이블에 갱신이 되더라구요Hibernate: call next value for hibernate_sequence Hibernate: /* insert non.Board */ insert into Board (title, id) values (?, ?) Hibernate: /* insert non.BoardDetail */ insert into BoardDetail (content, board_id) values (?, ?)공식 문서에서도 Person 저장하고 PersonDetail을 저장하던데이렇게 해도 동작하는 이유가 궁금합니다.
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
@EmbeddedId 복합키 질문이 있습니다
강사님 안녕하세요 !!@Entity @Getter @Setter public class EmParent { @Id private String id; private String name; } @Entity @Getter @Setter public class EmChild { @EmbeddedId private EmChildId id; @MapsId("parentId") @ManyToOne @JoinColumn(name = "parent_id",foreignKey = @ForeignKey(name = "parent_fk")) public EmParent parent; private String name; @EqualsAndHashCode @Getter @Setter @Embeddable public static class EmChildId implements Serializable { private String parentId;//@MapsId("parentId")와 매핑 @Column(name = "child_id") private String id;//Child.childId 매핑 } }테스트코드 EmParent emParent = new EmParent(); emParent.setName("내장 할아버지"); emParent.setId("A001"); em.persist(emParent); //복합키 만들기 EmChild.EmChildId id = new EmChild.EmChildId(); id.setId("F001"); id.setId("fake data"); //자식 엔티티 생성 EmChild emChild = new EmChild(); //자식 엔티티에 복합키 주입하기 emChild.setId(id); //아래 정보를 넣지 않으면 예외가 발생 emChild.setParent(emParent); emChild.setName("내장 아버지"); em.persist(emChild);식별 관계에서 @EmbeddedId를 사용할 때자식 엔티티에 Id 객체인 EmChildId 를 넣어줄 때EmChildId 클래스의@Column(name = "child_id") private String id;//Child.childId 매핑만 참조를 하고 부모의 pk를 참조하는 private String parentId;에는 어떤 값이 들어가도의미가 없더라구요@MapsId("parentId") @ManyToOne @JoinColumn(name = "parent_id",foreignKey = @ForeignKey(name = "parent_fk")) public EmParent parent여기에 값을 넣어줘야 EmChild 엔티티가 정상 동작합니다. 제가 실수한 부분있는 걸까요 ?아니면 식별관계일 때 @EmbeddedId는 읽어올때만 상관이 있고 저장할 때에는 상관이 없는 객체인가요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
item_id 네이밍 관련 질문드려요
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]Item 엔티티 설계할때 id 를 item_id로 하는것이 구체적으로 명명하는게 좋아서 그렇다고 다른 질문에서 답변을 남겨주셨는데요, 그렇다면 order 엔티티도 order_id로 하는게 좋지 않나요? 그렇게 하지 않으신 이유가 order에 이미 memberId 필드가 있어서 그런걸까요? 굳이 order_id라고 명명하지 않아도 memberId와 구분되서 그런건가요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
영속성 컨텍스트 동시성...? 관련 질문입니다
em.flush를 명시적으로 적어주거나, 트랜잭션이 끝나서 커밋이 될 때 DB에 쿼리를 날리는 JPA에 관해서 궁금한게 있습니다. DB 제약은 복합키로 되어있고 insert 하는 상황에서 궁금증이 있는데요 동일한 복합키를 가진건 DB쿼리를 그대로 날려도 Exception을 뱉어서 실제 DB에는 들어가지 않는다는 것은 알고 있습니다. 다만 궁금한게 순수히 오로지 JPA로만 해결이 가능한 문제인지 궁금증이 있습니다. id와 name은 사용자로 부터 요청 받은 부분이고Member requetMember = new Member(id,name);Optional<Member> m = repository.findByIdAndName(id,name);if(m.isPresent()){repository.insert(requestMember);} 제가 궁금한 상황은 멀티서버 환경에서 실행 되는 쓰레드가 2개 있다고 했을때 동시에 2번의 요청을 보내고 2개 모두 예외는 발생하지 않아야 하는 상황입니다. A,B 쓰레드 모두 m.isPresent() 코드를 통과 하였고그 와중에 A 쓰레드가 실행될때, insert까지 마치고 트랜잭션 커밋까지 이루어진 상황에서 B쓰레드가 repository.insert(requestMember);이 부분을 실행 할 때 에러가 나는걸 방지 할 수 있는지 궁금합니다. JPA로 해보려다 딱히 방안이 생각나지 않아서insert 할 때 sql로 insert into memberselect id , namewhere not exist(select * from member where id='id', name='name') 이런식으로 insert 할 때 select를 1번의 쿼리로 하면서 하고있는데요, 이런 경우는 어떻게 해야할까요?
- 해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
상속관계 매핑 질문이 있습니다.
강의 제목 : 상속관계 매핑시작 시간: 31:36 외래키 참조 무결성 제약 조건을 활용 가능하다.ITEM.ITEM_ID(PK)와 ALBUM.ITEM_ID(PK,FK)를 쓸수있고,장점이 주문 테이블에서 외래키 참조로 아이템을 봐야한다면ITEM_ID만 보면 된다. 다 봐야할 경우 모델링이 이상해진다. 이렇게 말씀을 해주셨는데 외래키 참조 무결성 제약조건을 활용 가능하다고 말씀해주시는게데이터베이스 CASCADE 옵션으로 DELETE같은걸 활용할 수 있다는 의미인가요 ? ITEM_ID만 보면 된다는게, 테이블로 보면 ITEM_ID만 알면 다른 테이블을 확인할 필요 없이ITEM_ID로 찝어서 조회가 가능하기 때문에 장점이라고 말씀해주신 걸까요 ? 시작 시간부터 약 30초간 말씀해주시는게 이해가 안되서 질문을 남겨봅니다.
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
연관관계 설정 시에 ID값을 알고 있다면
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 간단한 내용이지만 조금 고민이 있어서 질문드립니다. 요청을 통해서 받은 데이터를 통해서나 로직상에서 연관관계에 필요한 Entity의 id값을 알고 있는 경우 필요한 Entity를 DB에서 조회하는 과정 없이 id값만 초기화된 Entity를 생성하여 주입하는 방식이 가능한 것으로 알고 있습니다. 이 때, 그렇게 주입된 Entity는 persist된 상태가 아니라는 점인데요. ( cascade 옵션이 적용 안 되었다는 가정 ) 이런 경우에 두 가지 경우의 수를 고려하였습니다.첫 번째는 연관관계 Entity가 연관관계 설정 외에는 사용될 일이 없는 로직의 경우이고두 번째는 연관관계에 필요한 Entity가 이후에도 여러 로직에서 사용되는 경우입니다. 두 번째의 경우에는 사실 고민할 것 없이 ID를 이용해 Entity를 생성하는 것이 아닌 SELECT를 통해서 Entity를 조회하여 사용하는 것이 좋은 방법이고 EntityGraph를 맞추는 면에서도 당연히 해주어야 하는 것으로 사료됩니다.하지만 첫 번째의 경우 굳이 Entity를 ID값을 통해 조회하는 과정이 필요한 지에 대한 의문입니다. 저런 단순한 로직의 경우 굳이 DB와의 정합성을 위해 조회 및 연관관계 편의메소드 등을 이용해서 EntityGraph를 맞춰줄 필요가 있나 싶었습니다.이런 경우에서 실제 현업에서는 어떤식으로 처리하는 지 궁금합니다. 저렇게 각 상황에 따라 효율을 따져서 다르게 처리하는 지 아니면 ID를 통해 데이터를 조회하는 것은 크게 성능상 문제가 되지 않으니 불필요하더라도 로직의 통일성이나 혹시 모를 사이드 이펙트를 대비해서 조회한 뒤 연관관계 편의 메소드를 통해 EntityGraph까지 맞춰 주는 지 궁금합니다..!저는 불필요하다고 생각하여 굳이 Entity그래프를 맞춰줄 필요가 없는 경우는 그런 과정을 생략하며 프로젝트를 하고 있었는데, 완성하고 보니 EntityGraph를 맞춰 주는 로직이 단 하나도 없는 걸 알게 되었습니다.아무래도 복잡한 비즈니스 로직이 없어서 그럴 수도 있겠다는 생각은 들었지만 너무 심한 것 같아 제가 JPA를 제대로 쓰고 있는 게 맞나 싶어 질문드립니다..ㅠㅠ