일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- org.apache.ibatis.binding.BindingException
- gitreset
- initialDelay
- DB방언
- Transaction not successfully started
- JPA
- Invalid bound statement (not found)
- @Table
- 캐쉬가능
- KAKAOLOGINAPI
- 무상태프로토콜
- HTTPMESSAGE
- Git
- 데이터베이스 방언
- 김영한JPA
- @Entity
- SpringBoot
- RFC723x
- 네이버 연결된 서비스
- 매핑정보가없는필드
- http
- hibernate.dialect
- 멱등활용
- anyMatch
- fixedDelay
- 네이버로그인API
- gitrevert
- ERROR TYPE : org.apache.ibatis.binding.BindingException
- HTTP3
- 자바ORM표준프로그래밍
- Today
- Total
twocowsong
@Table 본문
깃허브 정리 URL : https://github.com/sWineTake/jpa.git
@Table은 엔티티와 매핑할 테이블을 지정합니다.
생략하면 엔티티 이름을 테이블 이름으로 사용합니다.
@Table 속성을 정리하였습니다.
- name : 매핑할 테이블 이름
- catalog : catalog 기능이 있는 DB에서 catalog를 매핑
- schema : schema 기능이 있는 DB에서 schema를 매핑
- uniqueConstraints : DDL 생성 시에 유니크 제약조건을 만듭니다. 2개 이상에 복합 유니크 제약조건도 만들 수 있습니다. 참고로 이 기능은 스키마 자동 생성 기능을 사용해서 DDL을 만들때만 사용됩니다.
- 시나리오 -
개발하던 회원 관리 프로그램에서 다음 요구사항이 추가되었습니다.
1. 회원은 일반 회원과 관리자로 구분해야합니다.
2. 회원 가입일과 수정일이 있어야 합니다.
3. 회원을 설명 할 수 있는 필드가 있어야 합니다. 이 필드는 길이 제한이 없습니다.
요구사항을 만족하도록 회원 엔티티에 기능을 추가해봅시다.
@Getter
@Setter
@NoArgsConstructor
@Entity
@Table(name = "MEMBER")
public class Member {
@Id
@Column(name = "ID")
private String id;
@Column(name = "NAME")
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;
// ========= 이전 생성자들 =========
public Member(String id, String username) {
this.id = id;
this.username = username;
}
public Member(String id, String username, Integer age) {
this.id = id;
this.username = username;
this.age = age;
}
}
갑자기 처음보는 어노테이션들이 많아졌습니다. 자세하게 내용을 살펴봅시다.
roleType
- 자바의 enum을 사용해서 회원 타입을 구분하였습니다. 일반 회원은 USER, 관리자는 ADMIN입니다.
이처럼 자바의 enum을 사용하려면 @Enumerated 어노테이션이로 매핑해야 합니다.
createDate, lastModifiedDate
- 자바의 날짜 타입은 @Temporal을 사용해서 매핑해야합니다.
description
- 회원을 설명하는 필드는 길이 제한이 없습니다. 따라서 DB의 VARCHAR 타입대신 CLOB타입으로 저장해야 합니다.
@Lob을 사용하면 CLOB, BLOB타입을 매핑할 수 있습니다.
지금까지는 테이블을 먼저 생성하고 그다음에 엔티티를 만들었는데 이번에는 DB스키마 자동 생성을 사용해서 엔티티만 만들고 테이블은 자동 생성도되도록 해보겠습니다.
'IT > JPA' 카테고리의 다른 글
DDL생성 기능 - 제약 조건, 유니크 제약 조건 (0) | 2022.05.10 |
---|---|
DB스키마 자동 생성 (0) | 2022.05.10 |
@Entity (0) | 2022.05.09 |
엔티티 매핑 시작 (0) | 2022.05.09 |
영속성 관리 정리 (0) | 2022.05.08 |