관리 메뉴

꿀맛코딩

엔티티 매핑 본문

공부방/JPA

엔티티 매핑

soycrab 2023. 2. 18. 21:07

@Entity

- @Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다.

- JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수

 

주의

- 기본 생성자 필수

- final 클래스, enum, interface, inner 클래스 사용 x

- 저장할 필드에 final 사용 x 

 

 

 

데이터베이스 스키마 자동 생성

 

개발단계에서 Application 로딩 시점에 테이블 생성 기능이 있음

- DDL(Data Definition Language)을 어플리케이션 실행 시점에 자동 생성 

- 테이블 중심 -> 객체중심

- 데이터베이스 방언을 활용해서 데이터베이스에 맞는 적절한 DDL 생성 

- 이렇게 생성된 DDL은 개발 장비에서만 사용

- 생성된 DDL은 웅영서버에서는 사용하지 않거나, 적절히 다담은 후에 사용

 

"DDL"은 데이터베이스에서 데이터 정의 언어(Data Definition Language)의 약어입니다. 데이터 정의 언어는 데이터베이스에서 테이블, 인덱스, 뷰 등을 생성, 변경, 삭제하는 등의 작업에 사용되는 언어입니다. 일반적으로 SQL(Structured Query Language)을 사용하여 구현됩니다. 즉, DDL은 데이터베이스 구조를 정의하고 조작하기 위해 사용하는 언어라고 간단히 말할 수 있습니다.

 
 

 

데이터베이스 스키마 자동생성 - 속성

hibernate.hbm2ddl.auto

옵션 설명
create 기존 테이블 삭제 후 다시 생성(DROP + CREATE)
create-drop create 와 같으나 종료시점에 테이블 DROP
update 변경분만 반영(운영 DB에는 사용하면 안됨)
validate 엔티티와 테이블이 정상 매핑 되었는지만 확인
none 사용하지 않음 

 

- 스키마 자동 생성하기 설정

- 스키마 자동생성하기 실행, 옵션별 확인

- 데이터베이스 방언 별로 달라지는 것 확인(varchar)

 

스키마(Schema)란 데이터베이스에서 데이터 구조, 제약 조건, 보안 규칙 등의 데이터베이스에 대한 전반적인 정의를 담고 있는 골격 구조를 의미합니다. 즉, 데이터베이스의 논리적인 구조를 설명하는 청사진(Blueprint)이라고 할 수 있습니다. 스키마는 데이터베이스에서 사용하는 테이블, 필드, 뷰 등의 객체들과 그들 간의 관계, 권한 등을 정의하며, 데이터베이스 관리자(DBA)나 데이터베이스 사용자들이 데이터베이스를 보다 효율적으로 관리하고 활용할 수 있도록 합니다. 스키마는 데이터베이스에서 중요한 개념 중 하나이며, 데이터베이스 설계와 구현에서 매우 중요한 역할을 합니다.


 

데이터베이스 스키마 자동 생성 - 주의

- 운영 장비에서는 절대 create, create-drop, update 사용하면 안된다.

- 개발 초기 단계는 create 또는 update

- 테스트 서버는 update 또는 validate

- 스테이징과 운영 서버는 validate 또는 none 

 

DDL 생성 기능

- 제약조건 추가 : 회원 이름은 필수, 10자 초과X

  • @Column(nullable= false, length= 10)

- 유니크 제약조건 추가

  • @Table(uniqueConstraints={@UniqueConstraint(name = "NAME_AGE_UNIQUE", columnNames={"NAME", "AGE"})})

- DDL 생성 기능은 DDL 을 자동 생성할 때만 사용되고 JPA의 실행 로직에는 영향을 주지 않는다. 

 

매핑 어노테이션 정리 

hibernate.hbm2ddl.auto

어노테이션 설명
@Column 컬럼 매핑
@Tempral 날짜 타입 매핑
@Enumerated enum 타입 매핑
@Lob BLOB, CLOB 매핑
@Transient 특정 필드를 컬럼에 매핑하지 않음(매핑 무시)

 

@Column

속성 설명 기본값
name 필드와 매핑할 테이블의 컬럼 이름  객체의 필드 이름 
insertable,
updatable
등록, 변경 가능 여부 true
nullable(DDL) null 값의 허용 여부를 설정한다, false로 설정 하면 DDL 생성 시에 not null 제약 조건이 붙는다.  
unique(DDL) @Table의 uniqueConstraints와 같지만 한 컬럼에 간단히 유니크 제약조건을 걸 때 사용한다.   
columnDefinition (DDL)
데이터베이스 컬럼 정보를 직접 줄 수 있다. ex) varchar(100) default ‘EMPTY'
필드의 자바 타입과 방언 정보를 사용해
length(DDL)
문자 길이 제약조건, String 타입에만 사용한다.
255
precision, scale(DDL)
BigDecimal 타입에서 사용한다(BigInteger도 사용할 수 있다). precision은 소수점을 포함한 전체 자 릿수를, scale은 소수의 자릿수 다. 참고로 double, float 타입에는 적용되지 않는다. 아주 큰 숫자나 정 밀한 소수를 다루어야 할 때만 사용한다.
precision=19, scale=2

 

@Enumerated

- 자바 enum 타입을 매핑할 때 사용 주의! ORDINAL 사용X

 

김영한 선생님 강의 복습 용도 메모

반응형

'공부방 > JPA' 카테고리의 다른 글

고급 매핑  (0) 2023.03.04
다양한 연관관계 매핑  (0) 2023.02.22
연관관계 매핑 기초  (0) 2023.02.19
준영속 상태  (0) 2023.02.13
영속성 컨텍스트  (0) 2023.02.12
Comments