Primary Key를 member_id가 아닌 auto_incremental인 bigint id로할때 repository 추상화를 어떻게 할지?
505
작성한 질문수 16
저희 강의에서 사용하는 H2 sql schema를 그대로 복붙해왔습니다. 다음과 같습니다.
drop table member if exists cascade;
create table member (
member_id varchar(10),
money integer not null default 0,
primary key (member_id)
);
저희 강의에서는 member_id varchar(10).
즉, String 타입의 ID를 PK로 사용하고 있습니다.
하지만 다음 링크를 보시면 실무에서는 String 타입의 ID를 PK로 사용하지 않는다고 답변해주셨습니다.
https://onduway.tistory.com/80
그래서, String member_id가 아닌 auto_incremental인 Long id를 pk로 쓰면. 다음과 같을것 같습니다.
create table member (
id bigint auto_incremental,
member_id varchar(10),
money integer not null default 0,
primary key (id)
);
그렇다면 member_id를 pk로 쓸때 사용하던 메소드인
public Member findById(String memberId);
는 변화 없이 그대로 사용해야 할까요?
예를들어 member_address 테이블을 상상해보겠습니다.
member테이블의 Long Id(pk)를 외래키로 member의 주소를 갖는 테이블입니다.
create table member_address (
id bigint auto_incremental,
member_id bigint(10),
money integer not null default 0,
primary key (id)
);
member_address를 탐색할때는 String meber_id가 아닌 Long member_id(member의 pk)가 필요합니다. 그렇다면 repository의 메소드가 추가되어야하지 않을까요? 다음과 같이말이죠
public Member findByMemberId(String memberId);
public Member findById(Long Id);
그러니 맨 처음 최초 로그인할때만 findByMemberId 메소드를 사용해서 PK를 받아오고. 그 이후의 모든 작업은 PK를 사용하는 findById 메소드를 사용해야 합당한 db설계일것같습니다.
질문을 요약하면 다음과 같습니다.
"String 타입의 ID를 PK로 사용하지 않고.
auto_incremental인 Long Id를 PK로 사용할때.
Repository의 탐색메소드 설계를 어떻게 해야 좋을까?"
최대한 스스로 정리해서 질문하려고 노력해보았습니다. 두서없는 질문글 읽어주셔서 감사합니다.
답변 1
트랙잭션 격리수준 선택에 대해서 질문
0
24
1
spring initialiser 어떤걸 선택해야될지 모르겠어요
0
60
2
트랜잭션 템플릿이 체크예외는 커밋하는 이유가 궁금합니다.
0
73
1
jdbc 학습하다 궁금해서 질문드려요
0
104
1
정상이체와 이체중 예외발생 차이
0
86
2
이번 강의부터가 JDBC 직접 사용 맞나요?
0
103
1
순수한 서비스 계층에 대한 의문???
0
93
2
3_4test, 4test 자동 리소스 안됨
0
66
2
데이터베이스 선택 관련 질문.
0
77
2
after 메서드 사용 유무
0
67
2
데이터베이스 접근 및 DB 락
0
65
1
@SpingBootTest, @TestConfiguration
0
68
1
Read Committed 격리 수준 사용 관련 질문
0
61
1
AopCheck Test 부분의 EnhancerBySpring 확인 법??
0
74
2
커리큘럼 관련 질문
0
85
1
서비서 계층 스프링 프레임워크 사용
0
100
1
validation(toMember)의 위치
0
91
2
데이터 계층에서 서비스 로직의 datasource를 인식하는 방법
0
178
2
member 상수 질문
0
139
2
ctrl + F6 이후로 con 인식이 안 됩니다
0
171
2
DrivenManager 와 Connection 반환에 대한 질문입니다!
0
121
1
섹션5 트랜잭션 템플릿관련 질문(이기종 DB)
0
127
1
세션1 테이블 조회결과 그림은 Redo 로그에 속하나요?
0
107
1
트랜잭션이 필요하지 않은 경우 DB 대신 파일 시스템을 사용하는 것이 더 효율적인가?
0
105
1





