Spring and Spring Boot/Class, Annotation, Library

Annotaion : 데이터베이스 관련 어노테이션 (@Id, @GeneratedValue, @Column, @Query)

마이트너 2024. 8. 22. 17:12

➡️ 데이터베이스 관련 애너테이션

// EX.

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Column(name = "user_name", nullable = false, unique = true, length = 50)
    private String name;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

 

 

✅ @Id

 : JPA(Java Persistence API)에서 엔티티 클래스의 기본 키(primary key)를 지정하는데 사용된다. 기본 키는 엔티티를 고유하게 식별하는 데 사용되며, 데이터베이스 테이블에서는 이 기본 키를 사용하여 특정 레코드를 식별한다.

 

예를 들어, User 엔티티 클래스에서 id 필드를 기본 키로 지정해보자. 위의 예제에서 @Id 어노테이션이 지정된 id 필드는 User 엔티티의 기본 키(primary key)를 나타낸다. 이렇게 지정된 필드는 JPA에 의해 엔티티 클래스와 데이터베이스 테이블의 기본 키로 매핑되는 것이다.

 

 

 

✅ @GeneratedValue(strategy=GenerationType.AUTO)

 : JPA(Java Persistence API)에서 엔티티의 기본 키(primary key) 값을 자동으로 생성하는 방법을 지정하는데 사용된다.

strategy 속성은 기본 키 값을 생성하는 전략을 지정하며, GenerationType.AUTO 전략을 선택한 경우 데이터베이스에 따라 기본 키 값을 자동으로 생성된다.

 

이는 유용한 기능이긴 하지만 대부분의 경우에는 데이터베이스에서 지원하는 자동 증가(auto-increment) 기능으로 이를 대신하곤 한다. 예를 들어, MySQL 데이터베이스에서는 AUTO_INCREMENT를 사용하여 기본 키 값을 자동으로 증가시킬 수 있다.

 

 

 

✅ @Column

: JPA(Java Persistence API) 엔티티 클래스의 필드를 데이터베이스 테이블의 열(column)에 매핑하는데 사용된다. 즉, 어노테이션을 사용하여 엔티티 클래스의 필드와 데이터베이스 테이블의 열 사이의 매핑을 정의하는 것이다. 이러한 @Column 애너테이션에 쓰이는 몇 가지 속성을 살펴보자.

  • name : 데이터베이스 테이블의 열 이름을 지정한다. 이때, 기본값은 필드의 이름과 같다.
  • nullable : 해당 필드가 null 값을 허용하는지 여부를 지정한다. 이때, 기본값은 true이다.
  • unique : 해당 필드가 고유한(unique) 값을 가져야 하는지 여부를 지정 한다. 이때, 기본값은 false다.
  • length : 문자열 필드의 길이를 지정 한다. 이때, 기본값은 255다.
  • precision와 scale : 숫자 필드의 정밀도와 스케일을 지정 한다. 이때, 기본값은 0다.

위 예제에서 처럼 User 엔티티 클래스에서 name 필드를 데이터베이스 테이블의 user_name 열에 매핑하는 경우, 해당 애너테이션의 역할은 무엇일까? @Column 어노테이션을 사용하여 name 필드를 데이터베이스 테이블의 user_name 열에 매핑하고, 해당 열이 null 값을 허용하지 않으며(unique 속성을 통해) 고유한 값을 가져야 하며, 최대 길이가 50자여야 함을 지정하고 있다.

 

 

 

 @Query("쿼리문 작성하기")

: JPA를 활용한 엔티티인 Repository에서 @Query 애너테이션을 활용하면, SQL문을 직접 작성할 수 있게 해준다.

 

 

728x90