티스토리 뷰
★ @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 타입을 매핑할 수 있다.
- 이 책을 바탕으로 학습했습니다.
자바 ORM 표준 JPA 프로그래밍 - 교보문고
스프링 데이터 예제 프로젝트로 배우는 전자정부 표준 데이터베이스 프레임 | ★ 이 책에서 다루는 내용 ★■ JPA 기초 이론과 핵심 원리■ JPA로 도메인 모델을 설계하는 과정을 예제 중심으로
www.kyobobook.co.kr
'차곡차곡 > Java' 카테고리의 다른 글
| [JAVA] 엔티티 매핑 (3) - DDL 생성 기능 (0) | 2022.07.23 |
|---|---|
| [JAVA] 엔티티 매핑 (2) - 데이터베이스 스키마 자동 생성 (0) | 2022.07.23 |
| [Java] 영속성 관리 - (5) 준영속 (0) | 2022.07.17 |
| [JAVA] JPA 영속성 관리 (4) - 플러시 (flush) (0) | 2022.07.17 |
| [JAVA] JPA 영속성 관리 (3) - 영속성 컨텍스트의 특징과 장점 (0) | 2022.07.17 |
- Total
- Today
- Yesterday
- 영속성 관리
- pip 설치 오류
- fragment태그
- 커틀렛 맛집
- JPA 기본키 매핑 전략
- JPA애플리케이션개발코드
- react counter
- 영주역 맛집
- 리액트 이벤트 처리하기
- 풍기역맛집
- 콘솔 창 한글 깨짐
- 로제 파스타 맛집
- JPA라이브러리
- JPQL이란
- 엔티티매니저팩토리
- JPA
- 토마호크 맛집
- 엘리먼트 렌더링
- 꾸덕꾸덕 파스타 맛집
- intellij 한글 깨짐
- React
- 온량 서울숲점
- Counter 만들기
- 리액트 엘리먼트 렌더링하기
- DDL 생성 콘솔 출력
- tick 만들기
- React를 이용한 Counter 만들기
- 버튼누르면전구이미지변하기
- 영주 한우
- 데이터베이스 스키마 자동 생성
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | 31 |
