이제부터 다양한 데이터 접근 기술들을 활용해서 메모리가 아닌 데이터베이스에 데이터를 보관하는 방법을 알아보자.
먼저 H2 데이터베이스에 접근해서 item 테이블을 생성하자.
drop table if exists item CASCADE;
create table item
(
id bigint generated by default as identity,
item_name varchar(10),
price integer,
quantity integer,
primary key (id)
);
● generated by default as identity
● identity 전략이고 하는데, 기본 키 생성을 데이터베이스에 위임하는 방법이다. MySQL의 Auto Increment와 같은 방법이다.
● 여기서 PK로 사용되는 id 는 개발자가 직접 지정하는 것이 아니라 비워두고 저장하면 된다. 그러면 데이터베이스가 순서대로 증가하는 값을 사용해서 넣어준다.
등록 쿼리
insert into item(item_name, price, quantity) values ('ItemTest', 10000, 10)
조회 쿼리
select * from item;
참고 - 권장하는 식별자 선택 전략
데이터베이스 기본 키는 다음 3가지 조건을 모두 만족해야 한다.
1. null 값은 허용하지 않는다.
2. 유일해야 한다.
3. 변해선 안 된다.
테이블의 기본 키를 선택하는 전략은 크게 2가지가 있다.
● 자연 키(natural key)
● 비즈니스에 의미가 있는 키
● 예: 주민등록번호, 이메일, 전화번호
● 대리 키(surrogate key)
● 비즈니스와 관련 없는 임의로 만들어진 키, 대체 키로도 불린다.
● 예: 오라클 시퀀스, auto_increment, identity, 키생성 테이블 사용
자연 키보다는 대리 키를 권장한다
자연 키와 대리 키는 일장 일단이 있지만 될 수 있으면 대리 키의 사용을 권장한다. 예를 들어 자연 키인 전화번호를 기본 키로 선택한다면 그 번호가 유일할 수는 있지만, 전화번호가 없을 수도 있고 전화번호가 변경될 수도 있다. 따라서 기본 키로 적당하지 않다. 문제는 주민등록번 호처럼 그럴듯하게 보이는 값이다. 이 값은 null 이 아니고 유일하며 변하지 않는다는 3가지 조건을 모두 만족하는 것 같다. 하지만 현실과 비즈니스 규칙은 생각보다 쉽게 변한다. 주민등록번호 조차도 여러 가지 이유로 변경될 수 있다.
출처 : 김영환 스프링 DB2 강의
'데이터 접근 기술' 카테고리의 다른 글
실용적인 구조 (0) | 2022.08.22 |
---|---|
스프링 데이터 JPA 예제와 트레이드 오프 (0) | 2022.08.22 |
데이터 접근 기술 진행 방식 소개3 (0) | 2022.08.11 |
데이터 접근 기술 진행 방식 소개2 (0) | 2022.08.11 |
데이터 접근 기술 진행 방식 소개 (0) | 2022.08.11 |