CodeJ.log
로그인
CodeJ.log
로그인
[JPA] JPA 프로그래밍 - 기본편
윤재열
·
2022년 9월 20일
팔로우
0
0
JPA
목록 보기
15/21
필드와 컬럼 매핑
@Entity
기본 생성자 필수(public or protect)
hibernate.hbmddl.auto, value ="create"
애플리케이션 동작시 drop과 create를 동시에 해줌
@Column
name : 필드와 매핑할 테이블의 컬럼 이름 (default : 객체의 필드 이름)
insertable :
등록 가능 여부
(default : TRUE)
updatable :
변경 가능 여부
(default : TRUE)
nullable(DDL) : null 값의 허용 여부를 설정, false 로 설정하면 DDL 생성시에
not null
제약조건이 붙는다.
unique(DDL) : @Table 의 uniqueConstraints와 같지만
한 컬럼에 간단하게 유니크 제약조건을 걸 때 사용
한다.
columnDefinition(DDL) : 데이터베이스 컬럼 정보를 직접 줄 수 있다.
ex) varchar(100) default 'EMPTY'
length(DDL) : 문자 길이 제약조건 , String 타입에만 존재하낟.
precision, scale(DDL) : BigDecimal 타입에서 사용한다.(BigInteger 도 사용가능)
percision 은 소수점을 포함한 전체 자리수를 ,scale은 소수의 자리수다.
참고로
double, float 타입에는 적용되지 않는다.
아주 큰 숫자나 정밀한 소수를 다루어야 할 때만 사용한다.
@Enumerated
Default 는 @Enumerated(EnumType.ORDINAL)
예를 들어 enum 타입인 RoleType 에 USER,ADMIN 2개가 있을 경우 EnumType.ORDINAL 일경우 USER : 0,ADMIN : 1 로 입력된다.
@Enumerated(EnumType.STRING)
을 사용한다면 USER 는 USER, ADMIN 은 ADMIN 그대로 DB에 반영됩니다.
@Temporal
날짜타입(java.util.Date, java.util.Calendar)을 매핑할 때 사용
LocalDate, LocalDateTime을 사용할 때는 생략 가능
(최신 하이버네이트 지원)
@Lob
DB BLOB,CLOB 타입과 매핑
@Lob에는 지정할 수 있는 속성이 없습니다.
매핑하는 필드 타입이 문자면 CLOB 매핑, 나버지는 BLOB 매핑
CLOB : String, char[],java.sql.CLOB
BLOB : byte[], java.sql.BLOB
@Transient
필드 매핑 X
DB에 저장X , 조회 X
주로 메모리상에서만 임시로 어떤 값을 보관하고 싶을 때 사용합니다.
기본 키 매핑 어노테이션
기본 키 매핑 방법
직접 할당 :
@Id
만 사용
자동 생성 (@GeneratedValue)
IDENTITY : 데이터베이스에 위임, MYSQL
SEQUENCE : 데이터베이스 시퀀스 오브젝트 사용, ORACLE
@SequenceGenerator 필요
TABLE : 키 생성용 테이블 사용, 모든 DB에서 사용
@TableGenerator 필요
AUTO : 방언에 따라 자동 지정, 기본값
권장하는 식별자 전략
기본 키 제약 조건 :null 이 아니여야하며,unique하고 변하면 안됩니다.
미래까지 이 조건을 만족하는 자연키는 찾기어려우니 대리키(대체키)를 사용합니다.
예를 들어 주민등록번호도 기본 키로 적절하지 않습니다.
권장 :Long형 + 대체키 + 키 생성전략 사용
윤재열
블로그 이전합니다! https://jyyoun1022.tistory.com/
팔로우
이전 포스트
[JPA] 커스텀 레포지토리 만들기
다음 포스트
[JPA] Repository 에서 Querydsl 사용하기
0개의 댓글
댓글 작성