SlideShare uma empresa Scribd logo
1 de 5
Baixar para ler offline
JPA, Querydsl 강좌#12
JPA 엔티티 매핑에서
식별자(Primary Key) 자동생성 방법
PPT 슬라이드 에서 확인 하세요.
작성자 : 이종철, 탑크리에듀(topcredu.co.kr)
JPA 식별자(PK) 자동생성 (1)
 식별자 자동생성은 @GeneratedValue 어노테이션으로 지정한다.
 복합키 보다는 대행키(인공키, Artifitial Key) 사용을 권장한다.
 @GeneratedValue의 strategy 속성에 값을 지정해 여러 가지 식별자 자동 생성 전략을 선
택할 수 있는데 AUTO, TABLE, SEQUENCE, IDENTITY 값으로 지정한다. 이 값들은 열거형
인 GenerationType에 정의되어 있다.
1. GenerationType.AUTO : 데이터베이스에 관계없이 식별자를 자동 생성 하라는 의미,
DB가 변경되더라도 수정할 필요 없다.
public class User {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="USER_ID")
protected Long userId;
…
}
JPA 공급자에 따라 기본설정이 다름
 Oracle을 사용할 경우 SEQUENCE가 기본
 MS SQL Server의 경우 IDENTITY가 기본
JPA 식별자(PK) 자동생성 (2)
2. GenerationType.TABLE : 가장 유연하고 이식성이 좋은 방법으로 키를 위한 테이블이 생성되어
있어야 하며, ID 생성 테이블은 두 개의 칼럼을 반드시 가져야 한다. 처음 컬럼은 특정 시퀀스를 식별하는
데 사용되는 문자열 타입이고 모든 Generator를 위한 위한 주키다. 두 번째 칼럼은 생성되고 있는 실제 ID
값인 시퀀스를 저장하는 숫자 타입으로 이 칼럼에 저장되는 값은 시퀀스에 할당되었던 마지막 값이 된다.
하나의 테이블에 여러 식별자 값을 저장할 수 있으며 오라클의 경우 다음처럼 사용하면 된다.
1. 식별자용 테이블 생성
CREATE TABLE SEQ_TABLE
(SEQ_NAME VARCHAR2(100) NOT NULL PRIMARY KEY, SEQ_VALUE NUMBER NOT NULL);
2. 식별자 테이블 초기화
INSERT INTO SEQ_TABLE VALUES ('USER_SEQ', 1);
3. TableGenerator 생성, @GeneratedValue 사용
@TableGenerator (name="MY_GENERATOR", table="SEQ_TABLE", pkColumnName="SEQ_NAME",
valueColumnName="SEQ_VALUE", pkColumnValue="USER_SEQ")
@Id @Entity
public class User {
@GeneratedValue(strategy=GenerationType.TABLE, generator="MY_GENERATOR")
@Column(name="USER_ID")
protected Long userId;
JPA 식별자(PK) 자동생성 (3)
3. GenerationType.SEQUENCE : DB에서 생성해 놓은 시퀀스를 이용하는 방법으로
오라클, DB2, PostgreSQL, H2 데이터베이스 등에서 사용한다.
1. 오라클 DB에 시퀀스 생성
CREATE SEQUENCE USER_SEQ;
2. 엔티티에 SequenceGenerator, @GeneratedValue 지정
@SequenceGenerator(name="USER_SEQ_GENERATOR", sequenceName="USER_SEQ")§
@Id
@Entity
public class User {
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="USER_SEQ_GENERATOR")
@Column(name="USER_ID")
protected Long userId;
…
}
4. GenerationType.IDENTITY : MySQL, MS-SQL 처럼 DB 자체적으로 식별자 칼럼
에 자동증분 속성이 있는 경우에 사용한다. 엔티티의 주키 컬럼을 위한 정의는 DB 스
키마 정의의 일부분으로 정의되어야 한다.
This practice makes the Expert!
Spring Framework & JPA
Spring Boot, JPA, Querydsl
실무프로젝트과정
JPA,쇼핑몰 프로젝트
실무과정

Mais conteúdo relacionado

Mais de 탑크리에듀(구로디지털단지역3번출구 2분거리)

(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]탑크리에듀(구로디지털단지역3번출구 2분거리)
 
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]탑크리에듀(구로디지털단지역3번출구 2분거리)
 

Mais de 탑크리에듀(구로디지털단지역3번출구 2분거리) (20)

[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
 
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
 
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
 
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios 3.3.5 추가적인 사항
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios  3.3.5 추가적인 사항[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios  3.3.5 추가적인 사항
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios 3.3.5 추가적인 사항
 
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
 
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
 
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
 
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
 
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
 
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
 
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
 
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
 
2. xamarin.android 2.5.3 xamarin.android .aar binding(안드로이드 .aar file을 자마린 바...
2. xamarin.android  2.5.3 xamarin.android .aar binding(안드로이드 .aar file을 자마린 바...2. xamarin.android  2.5.3 xamarin.android .aar binding(안드로이드 .aar file을 자마린 바...
2. xamarin.android 2.5.3 xamarin.android .aar binding(안드로이드 .aar file을 자마린 바...
 
유니티,Unity 엔진을 활용한 VR/AR 콘텐츠 개발 _사물인터넷(IoT) 네크워크 프로그래밍
유니티,Unity 엔진을 활용한 VR/AR 콘텐츠 개발 _사물인터넷(IoT) 네크워크 프로그래밍유니티,Unity 엔진을 활용한 VR/AR 콘텐츠 개발 _사물인터넷(IoT) 네크워크 프로그래밍
유니티,Unity 엔진을 활용한 VR/AR 콘텐츠 개발 _사물인터넷(IoT) 네크워크 프로그래밍
 
2. xamarin.android 2.5 xamarin.android(with .jar, .aar, native android librar...
2. xamarin.android 2.5 xamarin.android(with .jar, .aar, native android librar...2. xamarin.android 2.5 xamarin.android(with .jar, .aar, native android librar...
2. xamarin.android 2.5 xamarin.android(with .jar, .aar, native android librar...
 
2. xamarin.android 2.5 xamarin.android(with .jar, .aar, native android librar...
2. xamarin.android 2.5 xamarin.android(with .jar, .aar, native android librar...2. xamarin.android 2.5 xamarin.android(with .jar, .aar, native android librar...
2. xamarin.android 2.5 xamarin.android(with .jar, .aar, native android librar...
 
2. xamarin.android 2.3 hello android multi screen example part2
2. xamarin.android 2.3 hello android multi screen example part22. xamarin.android 2.3 hello android multi screen example part2
2. xamarin.android 2.3 hello android multi screen example part2
 
2. xamarin.android 2.2 hello xamarin android 구조 2.2.7 simple intent example(현...
2. xamarin.android 2.2 hello xamarin android 구조 2.2.7 simple intent example(현...2. xamarin.android 2.2 hello xamarin android 구조 2.2.7 simple intent example(현...
2. xamarin.android 2.2 hello xamarin android 구조 2.2.7 simple intent example(현...
 
2. xamarin.android 2.2 hello xamarin android 구조 2.2.7 simple intent example(현...
2. xamarin.android 2.2 hello xamarin android 구조 2.2.7 simple intent example(현...2. xamarin.android 2.2 hello xamarin android 구조 2.2.7 simple intent example(현...
2. xamarin.android 2.2 hello xamarin android 구조 2.2.7 simple intent example(현...
 
2. xamarin.android 2.2 hello xamarin android 구조 2.2.6 simple intent example(웹...
2. xamarin.android 2.2 hello xamarin android 구조 2.2.6 simple intent example(웹...2. xamarin.android 2.2 hello xamarin android 구조 2.2.6 simple intent example(웹...
2. xamarin.android 2.2 hello xamarin android 구조 2.2.6 simple intent example(웹...
 

(JPA, Querydsl강좌 #12)JPA 엔티티 매핑에서 식별자 자동생성방법_탑크리에듀교육센터(www.topcredu.co.kr)

  • 1. JPA, Querydsl 강좌#12 JPA 엔티티 매핑에서 식별자(Primary Key) 자동생성 방법 PPT 슬라이드 에서 확인 하세요. 작성자 : 이종철, 탑크리에듀(topcredu.co.kr)
  • 2. JPA 식별자(PK) 자동생성 (1)  식별자 자동생성은 @GeneratedValue 어노테이션으로 지정한다.  복합키 보다는 대행키(인공키, Artifitial Key) 사용을 권장한다.  @GeneratedValue의 strategy 속성에 값을 지정해 여러 가지 식별자 자동 생성 전략을 선 택할 수 있는데 AUTO, TABLE, SEQUENCE, IDENTITY 값으로 지정한다. 이 값들은 열거형 인 GenerationType에 정의되어 있다. 1. GenerationType.AUTO : 데이터베이스에 관계없이 식별자를 자동 생성 하라는 의미, DB가 변경되더라도 수정할 필요 없다. public class User { @Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(name="USER_ID") protected Long userId; … } JPA 공급자에 따라 기본설정이 다름  Oracle을 사용할 경우 SEQUENCE가 기본  MS SQL Server의 경우 IDENTITY가 기본
  • 3. JPA 식별자(PK) 자동생성 (2) 2. GenerationType.TABLE : 가장 유연하고 이식성이 좋은 방법으로 키를 위한 테이블이 생성되어 있어야 하며, ID 생성 테이블은 두 개의 칼럼을 반드시 가져야 한다. 처음 컬럼은 특정 시퀀스를 식별하는 데 사용되는 문자열 타입이고 모든 Generator를 위한 위한 주키다. 두 번째 칼럼은 생성되고 있는 실제 ID 값인 시퀀스를 저장하는 숫자 타입으로 이 칼럼에 저장되는 값은 시퀀스에 할당되었던 마지막 값이 된다. 하나의 테이블에 여러 식별자 값을 저장할 수 있으며 오라클의 경우 다음처럼 사용하면 된다. 1. 식별자용 테이블 생성 CREATE TABLE SEQ_TABLE (SEQ_NAME VARCHAR2(100) NOT NULL PRIMARY KEY, SEQ_VALUE NUMBER NOT NULL); 2. 식별자 테이블 초기화 INSERT INTO SEQ_TABLE VALUES ('USER_SEQ', 1); 3. TableGenerator 생성, @GeneratedValue 사용 @TableGenerator (name="MY_GENERATOR", table="SEQ_TABLE", pkColumnName="SEQ_NAME", valueColumnName="SEQ_VALUE", pkColumnValue="USER_SEQ") @Id @Entity public class User { @GeneratedValue(strategy=GenerationType.TABLE, generator="MY_GENERATOR") @Column(name="USER_ID") protected Long userId;
  • 4. JPA 식별자(PK) 자동생성 (3) 3. GenerationType.SEQUENCE : DB에서 생성해 놓은 시퀀스를 이용하는 방법으로 오라클, DB2, PostgreSQL, H2 데이터베이스 등에서 사용한다. 1. 오라클 DB에 시퀀스 생성 CREATE SEQUENCE USER_SEQ; 2. 엔티티에 SequenceGenerator, @GeneratedValue 지정 @SequenceGenerator(name="USER_SEQ_GENERATOR", sequenceName="USER_SEQ")§ @Id @Entity public class User { @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="USER_SEQ_GENERATOR") @Column(name="USER_ID") protected Long userId; … } 4. GenerationType.IDENTITY : MySQL, MS-SQL 처럼 DB 자체적으로 식별자 칼럼 에 자동증분 속성이 있는 경우에 사용한다. 엔티티의 주키 컬럼을 위한 정의는 DB 스 키마 정의의 일부분으로 정의되어야 한다.
  • 5. This practice makes the Expert! Spring Framework & JPA Spring Boot, JPA, Querydsl 실무프로젝트과정 JPA,쇼핑몰 프로젝트 실무과정