이제부터 다양한 데이터 접근 기술들을 활용해서 메모리가 아닌 데이터베이스에 데이터를 보관하는 방법을 알아보자.

 

먼저 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 강의 

복사했습니다!