본문 바로가기

기본키2

[JPA] @Id, @GenerateValue 의 전략 보통 AUTO 로 설정하는데, 공부도 할겸 정리해본다. GenerateValue의 전략은 3가지가 있다. 1. IDENTITY 2. SEQUENCE 3. TABLE 1. IDENTITY 기본키를 생성하는 작업을 전적으로 데이터베이스에 위임하는 것이다. 즉 데이터베이스와 동일시 하는 것. 이러한 특징때문에 persist 명령후에 엔티티의 pk를 바로 알수가 없다. 왜냐하면 데이터베이스에 한번 갔다 와야 pk를 알 수 있기 때문이다. 그래서 persist를 하면 바로 insert쿼리가 전송된다. 원래는 flush작업으로 그동안 쌓여있던 sql 쿼리들이 전송되면서 동기화가 된다. IDENTITY전략에서만 유일하게 persist 작업과 동시에 쿼리를 날린다. 2. SEQUENCE persist 하면 데이터베이스.. 2020. 8. 6.
[데이터베이스] 기본키와 외래키 그리고 제약조건의 설계 기본키 - primary key - 데이터를 구분하는 가장 근본이 되는 값 - not null & unique 외래키 학번 이름 수강과목 b6xxxx 김길동 1 b7xxxx 조길동 2 b5xxxx 박길동 3 수강과목id 과목이름 1 자료구조 2 프로그래밍 언어 외래키는 위 처럼 다른 테이블의 '기본키'를 참조할때 외래키라고 한다. 박길동은 3번 과목이 없지만 3번 수강과목을 들었다고 되어있는 데 이런 현상을 dangling 이라고 한다. 이는 참조 무결성을 위반한 것이다. 제약조건의 설계 -개체 무결성(entity integrity) 기본키는 null 을 가질수 없다. - 참조 무결성 (referential integrity) 외래키는 참조하는 테이블에 존재하여야 한다. - 도메인 무결성 (domain .. 2020. 6. 11.