충분히 쌓여가는
@Entity, @NoArgsConstructor, @Id, @GeneratedValue 본문
package org.example.springbootdeveloper;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
@Getter
@Entity
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", updatable = false)
private Long id;
@Column(name = "name", nullable = false)
private String name;
}
@Entity
Member 객체를 JPA가 관리하는 엔티티로 지정한다
Member 클래스와 실제 데이터베이스의 테이블을 매핑시킨다
@Entity의 속성 중 name을 사용하면 name의 값을 가진 테이블 이름과 매핑되고, 테이블 이름을 지정하지 않으면 클래스 이름과 같은 이름의 테이블과 매핑된다
위 코드에서는 테이블 이름을 지정하지 않았기 때문에 클래스 이름과 같은 데이터베이스의 이름인 member 테이블과 매핑된다
@Entity 에서 테이블을 지정하고 싶다면 name 파라미터에 값을 지정해주면된다
@Entity(name = "member_list")
public class Article {
// ... 생략
}
@NoArgsConstructor
protected 기본 생성자
엔티티는 반드시 기본 생성자가 있어야 하고, 접근 제어자는 public 또는 protected
public 보다는 protected가 더 안전하므로 접근 제어자가 protected인 기본 생성자를 생성
@Id
Long 타입의 id 필드를 테이블의 기본키로 지정한다
@GeneratedValue
기본키의 생성 방식을 결정
자동으로 기본키가 증가되도록 지정
AUTO | 선택한 데이터베이스 방언(dialect)에 다라 방식을 자동으로 선택(기본값) |
IDENTITY | 기본키 생성을 데이터베이스에 위임(= AUTO_INCREMENT) |
SEQUENCE | 데이터베이스 시퀀스를 사용해서 기본키를 할당하는 방법, 오라클에서 주로 사용 |
TABLE | 키 생성 테이블 사용 |
@Column
데이터베이스의 컬럼과 필드를 매핑해준다
name | 필드와 매핑할 컬럼 이름, 설정하지 않으면 필드 이름으로 지정해준다 |
nullable | 컬럼의 null 허용 여부, 설정하지 않으면 true(nullable) |
unique | 컬럼의 유일한 값 여부, 설정하지 않으면 false(non-unique) |
columnDefinition | 컬럼 정보 설정, default 값을 줄 수 있다 |
'Spring > Spring Boot' 카테고리의 다른 글
@RequiredArgsConstructor, @Service (0) | 2023.12.21 |
---|---|
REST API (0) | 2023.12.21 |
스프링 데이터 JPA (0) | 2023.12.21 |
엔티티 매니저, 영속성 컨텍스트 (0) | 2023.12.21 |
ORM, JPA, hibernate (0) | 2023.12.21 |