Spring | Spring Data JPA 이용 | 엔티티 클래스 생성

자, 이제 드디어 Spring Data JPA를 이용하기 위한 사전 준비가 되었다. 여기에서 실제로 Spring Data JPA를 이용하기 위한 코딩에 들어간다.

Spring Data JPA는 데이터베이스에 작성되는 테이블을 다루기 위하여 “엔티티"라는 클래스를 사용한다. 엔티티는 테이블의 구조를 Java 클래스로 재구성 한 것이다. 동시에 테이블에서 검색되는 데이터들도 엔티티의 인스턴스로 처리된다.

아래에 간단한 엔터티 클래스의 샘플로 com.devkuma.spring.db 패키지 “SampleEntity"라는 클래스로 작성하자.

package com.devkuma.spring.db;
 
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
 
@Entity
public class SampleEntity {
     
    @Id
    @Column
    @GeneratedValue(strategy=GenerationType.AUTO)
    private long id;
     
    @Column(length=50, nullable=false)
    private String name;
     
    @Column(length=100, nullable=true)
    private String mail;
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public String getMail() {
        return mail;
    }
 
    public void setMail(String mail) {
        this.mail = mail;
    }
 
    public long getId() {
        return id;
    }
     
    public SampleEntity() {
        super();
    }
     
    public SampleEntity(String name, String mail) {
        this();
        this.name = name;
        this.mail = mail;
    }
     
    public String toString() {
        return "SampleEntity [id=" + id + ", name=" + name + ", mail=" + mail + "]";
    }
}

엔티티 클래스에서는 테이블에 포함되는 항목을 그대로 필드로 제공한다. 즉, “테이블=클래스”, “컬럼=필드 “라는 느낌으로 정의한다. 주의 할 점은 오직 정의 할뿐만 아니라 각각에 어노테이션을을 붙여 있다는 것이다. 이는 다음에 정리하였다.

@Entity

엔티티 클래스에 붙인다. 이 어노테이션을 붙이는 것으로,이 클래스가 엔터티 클래스임을 나타낸다.

@Column

필드에 붙인다. 테이블의 칼럼을 나타내기 위한 것이다. 이것을 붙인 필드는 그 이름과 같은 칼럼의 값을 저장하는 것으로 간주된다. 따라서, 칼럼의 형태와 같은 형태의 값이 아니면 안됩니다. 또한 샘플은

@Column(length=50, nullable=false)

이런 식으로 있다. 이것은 ( ) 안에 칼럼 특성을 기술하고 있는 것이다. 이런 방식으로 그 칼럼에 설정해야 속성도 함께 어노테이션을 작성할 수 있다.

@Id

이 어노테이션은 최초의 id 필드에만 붙일 수 있다. 기본 키를 나타 내기위한 것이며, 이것을 붙인 필드는 그 테이블의 기본 키 컬럼임을 나타낸다.

@GeneratedValue (strategy = GenerationType.AUTO)

이것도 id 필드에 붙여 있다. 이것은 값의 자동 생성에 관한 것이다. strategy=GenerationType.AUTO 값을 지정하면 값을 자동으로 설정하도록 한다.

추가되어 있는 필드는 모두 private으로되어 있으며, Setter/Getter 메소드에 액세스 할 수 있게 되어 있다. 그 외에 두 종류의 생성자와 toString 메소드가 있지만, 이들은 엔티티에 필수는 아니다. 필요에 따라 준비하면 된다.