티스토리 뷰

★ @Entity란?

- JPA를 사용해서 테이블과 매핑할 클래스는 @Entity를 꼭 붙여야 한다.

  

☆ @Entity 속성

1. name : JPA에서 사용할 엔티티 이름을 지정해야한다. 

                설정하지 않으면 클래스 이름 그대로 사용하는 걸로 인식한다.

 

☆ @Entity 주의사항

1. 기본 생성자는 필수 (파라미터가 없는 public 또는 protected 생성자)

public member () // 기본 생성자

//임의의 생성자
public Member(String name){
	this.name = name
}

 

2. final, enum,interface,inner 클래스에는 사용 불가

3. 저장할 필드에 final 사용불가

 

 

★ @Table란?

- @Table은 엔티티와 매핑할 테이블을 지정한다. 이를 생략하면 매핑한 엔티티 이름을 테이블 이름으로 사용한다.

 

☆ @Entity 속성

속성 기능 기본값
name 매핑할 테이블 이름 엔티티 이름을 사용한다.
catalog catalog 기능이 있는 데이터베이스에서 catalog를 매핑한다.  
schema schema 기능이 있는 데이터베이스에서 schema를 매핑한다.
DDL 생성 시에 유니크 제약조건을 만든다.
2개 이상의 복합 유니크 제약조건도 가능하다.
스키마 자동 생성 기능을 사용해서 DDL을 만들 때만 사용된다. 
 

※ DDL(Data Definition Language] - 데이터 정의어

데이터 베이스를 정의하는 언어 / 데이터 생성,수정,삭제 등 전체 골격을 만드는 역할

ex ) CREATE, ALTER,DROP,TRUNCATE

 

출처 : https://cbw1030.tistory.com/71

 

★ 그 외 다양한 매핑

    - 회원 관리 프로그램에서 다음과 같은 요구사항이 추가해야 한다.

      1. 회원은 일반회원 / 관리자 로 구분

      2. 회원 가입일과 수정일 생성

      3. 회원을 설명할 수 있는 필드 생성. 이 필드는 길이 제한 없음

 

package jpabook.start;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.UniqueConstraint;



@Entity
@Table(name="MEMBER", uniqueConstraints = {@UniqueConstraint( //추가
		name = "NAME_AGE_UNIQUE",
		columnNames = {"NAME","AGE"})})
public class Member {

	@Id
	@Column(name="ID")
	private String id;
	
	@Column(name= "NAME", nullable = false, length=10 ) // 추가
	private String username;
	
	private Integer age;
	
	//==추가==
	@Enumerated(EnumType.STRING)
	private RoleType roleType;
	
	@Temporal(TemporalType.TIMESTAMP)
	private Date createDate;
	
	@Temporal(TemporalType.TIMESTAMP)
	private Date lastModifiedDate;
	
	@Lob
	private String description;
	
	
	//Getter,Setter
	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	public RoleType getRoleType() {
		return roleType;
	}

	public void setRoleType(RoleType roleType) {
		this.roleType = roleType;
	}

	public Date getCreateDate() {
		return createDate;
	}

	public void setCreateDate(Date createDate) {
		this.createDate = createDate;
	}

	public Date getLastModifiedDate() {
		return lastModifiedDate;
	}

	public void setLastModifiedDate(Date lastModifiedDate) {
		this.lastModifiedDate = lastModifiedDate;
	}

	public String getDescription() {
		return description;
	}

	public void setDescription(String description) {
		this.description = description;
	}
	
}

 

1.  roleType

    - 자바의  enum을 사용해서 회원 타입을 구분한다. 이때 쓰이는 어노테이션은 @Enumerated이다. 

      일반 회원은 USER, 관리자는 ADMIN

2. createdDate,lastModifiedDate

    - 자바의 날짜 타입은 @Temporal을 사용해서 매핑한다.

3. description

    - 회원을 설명하는 필드는 길이 제한이 없다. 그래서 VARCHAR타입 대신에 CLOB타입으로 저장해야한다.

      @Lob을 사용하면 CLOB,BLOB 타입을 매핑할 수 있다.

 

     


 

- 이 책을 바탕으로 학습했습니다.

http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788960777330&orderClick=LAG&Kc=

 

자바 ORM 표준 JPA 프로그래밍 - 교보문고

스프링 데이터 예제 프로젝트로 배우는 전자정부 표준 데이터베이스 프레임 | ★ 이 책에서 다루는 내용 ★■ JPA 기초 이론과 핵심 원리■ JPA로 도메인 모델을 설계하는 과정을 예제 중심으로

www.kyobobook.co.kr