inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! 스프링 데이터 JPA

선생님은 실무에서 데이터를 등록할 때 어떤걸 쓰시나요? ( persist vs save )

319

화이팅

작성한 질문수 37

0

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

[질문 내용]
spring data jpa의 save를 사용할 경우 내부적으로 id 값으로 데이터가 있는지 확인하는 select 쿼리를 날리고 insert 또는 update를 합니다.
그럼으로 그냥 insert 하는 것 보다 1번의 쿼리(총 2번)가 더 발생합니다.
jpa의 persist를 사용하면 바로 insert를 하여 1번의 쿼리만 발생합니다.
 
저는 개인적으로 insert만 하는 경우 persist를 사용하고 있습니다.
Service에서 직접 EntityManager를 DI 받아 persist를 사용했습니다.
스프링 DB 1편 - 데이터 접근 핵심 원리 을 보다가 Service는 최대한 순수한 자바코드만 있는게 좋다는 말씀에 머리가 띵하더군요.
좋은 OOP 설계를 위해 save를 사용하거나 CustomRepository를 만들어 persist를 사용하거나 어떤게 더 좋은 방법일까요?
선생님은 실무에서 어떻게 사용하시는 지 궁금합니다!
 

java spring-boot spring JPA

답변 1

0

김영한

안녕하세요. 정민영님

다음을 참고해주세요.

https://www.inflearn.com/questions/197446

감사합니다.

0

화이팅

선생님 답글 남겨주신 부분을 보고 제가 save의 동작 방식을 헷갈리고 있던 걸 알게되었습니다.

디버깅해서 isNew를 타고 가니 선생님이 애기해주신대로 id 값의 존재 유무로 따라 persist, merge를 호출하더군요. 

정말 감사합니다.

한가지 더 궁금한게 있어서 문의드립니다.

persist를 사용하면 spring 이 변환해주는 exception(org.springframework.dao.*Exception)이 아니라 jdbc 설정된 db(h2)의 Exception을 직접 반환하더라고요.

db 강의를 듣고나서 생각했을 때는 spring이 변환해주는 Exception을 사용하기위해 save를 사용하는게 더 좋은 방법이라고 생각됩니다.

선생님의 의견이 궁금하여 문의드립니다!

실무에서는 save를 사용하는지가 궁금합니다! 

0

화이팅

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-2/unit/114657?tab=curriculum
강의 듣는중 JPA 예외 변환을 통해 순수 JPA의 data exception을 spring 추상화 exception으로 변환하는 법을 알게되었습니다. 제가 질문 드린 것에 대한 답과 연관되어 있네요. 감사합니다!

0

김영한

민영님 스스로 잘 해결하셨습니다^^

changeTeam 메서드 질문

0

35

1

existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?

0

88

1

existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?

0

129

3

MemberRepository 구현체

0

73

1

pdf 표현 질문드립니다.

0

78

1

로그가 남지 않는 문제.

0

100

1

테스트 라이브러리가 강의는 junit4가 맞나요??

0

80

2

pdf 파일과 차이점이 있는 것같은데 문제 없나요?

0

77

2

@PrePersist, @PreUpdate 호출 시점 질문드립니다.

0

104

2

Sort 인터페이스는 잘 사용 안하나요?

0

61

1

스캔대상 질문드립니다.

0

50

1

하이버네이트6에서의 최적화에 이은 질문

0

92

1

save() vs saveAndFlush DB 통신 횟수

0

61

1

순수 JPA 리포지토리 코드 수정부분

0

93

2

bulk연산 후 flush하는 이유를 모르겠어요

0

164

3

bulk insert 질문입니다.

0

191

2

교만했던 것 같아요.

0

152

1

RESTful 강의는 안하시는 건지 궁금합니다.

0

154

2

동적 테이블에 대한 질문

0

90

1

영속성 전이와 연관관계

0

142

2

강의 10:25 질문

0

80

1

단건 update 질문

0

104

2

엔티티 와 도메인의 경계

0

132

1

UsernameOnlyDto 타입 type mismatch 오류

0

123

1