Notice
Recent Posts
Recent Comments
«   2024/11   »
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
Archives
Today
Total
관리 메뉴

충분히 쌓여가는

@Entity, @NoArgsConstructor, @Id, @GeneratedValue 본문

Spring/Spring Boot

@Entity, @NoArgsConstructor, @Id, @GeneratedValue

빌드이너프 2023. 12. 21. 19:36
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