일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- appspec
- 네이티브쿼리
- subquery
- 테스트
- 테스트메소드
- ㅔㄴ션
- foreignkey
- MySQL
- 참조키
- 서브쿼리
- 예약
- 적용우선순위
- EC2
- 메소드명
- querydsl
- 검색
- Query
- AuthenticationEntryPoint
- 외부키
- 커밋메세지수정
- 2 > /dev/null
- application.yml
- 추후정리
- 포트
- appspec.yml
- docker명령어
- 컨테이너실행
- ubuntu
- WeNews
- 메세지수정
Archives
- Today
- Total
제뉴어리의 모든것
Repository.save시 유의 사항 본문
Repository로 Entity를 save할때 해당 Entity의 PK가 AI같은 DB에서 자동 할당해주는 필드(DB에서 Unique를 보장하므로)가 아니고 사용자가 입력하여 지정되는 필드라면(ex: String) Insert 하기 전에 해당 PK(예를 들어 String 형식의 Email이라던가..)를 Where 조건절로 넣어서 해당 테이블을 한번 Select 해서 중복되는 데이터가 없는지 확인하고 Insert를 한다.
그리고 다른 테이블을 참조하는 테이블의 경우 자신의 테이블의 PK가 AI여도 참조하는 테이블의 필드가 String같은 필드라면 참조하는 테이블에 해당 필드값이 존재하는지 Where조건으로 참조하는 테이블을 한번 Select 한 뒤 Insert한다.
그러므로
A 테이블
if(PK -> AutoIncreament) ==> Select 없이 그냥 Insert
B 테이블
if(PK -> String) ==> 본인 테이블 Where Select -> Insert
C 테이블
if(PK -> AutoIncreament)
if(참조테이블의 PK -> String) ==> 참조테이블 Where Select -> Insert
D 테이블
if(PK -> AutoIncreament)
if(참조테이블의 PK -> AutoIncreament) => Select 없이 그냥 Insert
'Spring Boot > Hibernate' 카테고리의 다른 글
Hibernate 쿼리 로그, 라인 맞추고 색깔로 구분하기 (1) | 2022.09.02 |
---|