inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

변경 감지와 병합

168

이현송

작성한 질문수 3

0


[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
변경감지와 병합 강의에서 서비스단에도 set 을 되도록 쓰지말고 change 같은거 쓰라고 하셨는데 그럼 change 라는 메서드는 어디에 만드는게 좋나요?? 리포지토리 or 서비스 or 도메인의 Item 안에 ?? 어디인가요

spring-boot java 웹앱 spring JPA

답변 1

1

나무늘보

안녕하세요, 이현송 님. 공식 서포터즈 codesweaver 입니다.
.
change 및 관계메서드 등은 엔티티에 작성하시면 됩니다.

.
감사합니다.

0

이현송

근데 엔티티는 제가 작성할수 없는거 아닌가요?? 예를들어 entitymanager em 이런거는 리포지토리에서 불러올뿐 그 실체는 제가 작성한거 아니지 않나요??

0

나무늘보

안녕하세요 이현송님!

 

혹시 수업을 어디까지 학습하신건지 제가 알 수 없지만,

도메인 분석 설계 챕터의 - '엔티티 클래스 개발1' 을 확인하시면 엔티티를 작성하는 내용이 나옵니다.

이 엔티티 부분은 개발자가 직접 작성해야 합니다.

 

엔티티 매니저는 말씀하신 것처럼 사용자가 직접 수정하지는 않습니다.

감사합니다.

0

이현송

오.. 감사합니다 도메인 폴더에 있는게 거의 엔티티라는 @하고 어노테이션이 작성이 되어있군요.. 배웠습니다..

1. public void save(Item item) {

        if (item.getId() == null) {

            em.persist(item);

        } else {

            em.merge(item);

        }

    }

 

   2. public Item findOne(Long id) {

        return em.find(Item.class, id);

    }

그럼 1번 코드에서 em 은 괄호안에 item을 바로쓰는데 em.find 안에는 .class 까지 붙이는 이유가먼가요??

그리고 find 안에 id 값가지 넘겨주는거는 id 를 찾으려고 넘겨주는거죠??

1

나무늘보

안녕하세요!

 

엔티티 매니저에는 다양한 객체가 저장될 수 있습니다. 가령 Item, Member 등이요.

그래서 이를 저장하거나 찾을때 이를 클래스별로 구분할 필요가 있습니다.

.

svae()의 경우 Item 클래스의 인스턴스인 item 을 그대로 넣어주기에 엔티티 매니저 입장에서는 얘가 Item 클래스라는걸 알 수 있습니다.

.

반면 find()의 경우 Long id 라는 롱 타입의 숫자만을 가지고 원하는 객체를 찾아야 합니다. 그럼 이 아이디가 Item의 아이디인지 Member의 아이디인지 알 수 없겠지요? 그래서 어떤 클래스의 id를 말하는건지 모두 말해주어야 하는 것입니다.

.

가령 현송님이 커다란 자루에 빨간 공과 빨간 시계를 가지고 있습니다.

그 때 친구가 자루에 있는 '빨간거' 꺼내 줘. 라고 하면 현송님은 빨간것 중에 공을 말하는 건지 시계를 말하는건지 헷갈립니다.

그래서 친구나 '공, 빨간거' 꺼내줘 라고 해야 비로소 제대로 된 물건을 꺼낼 수 있습니다.

.

감사합니다.

 

0

이현송

크으... 설명 감사합니다.. svae() 이건 save() 말씀하신거죠 ??
진짜로 감사합니다.. 예시까지 자세하게 설명해주셔서 감사합니다..

OrderServiceTest 상문주문 테스트 시 update 쿼리 문의

0

40

1

sdk 설정 오류

0

83

2

오탈자 - @Transactional

0

76

1

src/test/resources 테스트 경로 문제

0

75

1

상품 등록후 H2 db 출력 순서 바꿀 수 있나요?

0

74

1

MemberRepositoryTest 실행오류

0

98

1

boot 4.x >>> trasasction rolled back log & p6spy(영한님, 수업 자료 업데이트 해주시면 감사하겠습니다!!)

1

204

2

강의 마지막 QueryDSL 사용 부분 질문있습니다

1

161

2

클라이언트에서 isbn과 author 수정 요청을 한 경우에 대해 질문드립니다.

0

61

1

도메인 모델 패턴 vs 트랜잭션 스크립트 패턴

0

90

1

기본 생성자

0

69

1

h2 DB 연결시 jdbc url 변경 이유가 궁금합니다.

0

109

1

멤버서비스테스트 부분에서 막힙니다.

0

188

4

실무에서도 EntityManager를 이용해서 많이 작업하는 편일까요?

0

130

1

초반에 h2 다운로드 과정 꼭 필요한가요?

0

134

2

자신 필드에도 get으로 접근하는 이유가 있을까요?

0

126

1

24분 27초 연관관계 편의 메서드 위치

0

120

1

단건 주문만 가능하게 한건 의도한 부분이신가요?

0

120

2

빌드 툴, Gradle

0

73

1

h2연결은 된 것 같은데 엔티티 테이블까지 작성 후 확인해보아도 테이블이 안보입니다

0

85

2

Repository에서 EntityManager 주입 방식 차이

0

100

1

롬복과 사용자 정의 setter 메서드

0

80

1

주문 목록 조회 fetch join 질문드립니다

0

93

1

dirty checking 질문드립니다.

0

91

1