어노테이션?

kongta2·2023년 10월 31일

어노테이션(Annotation)?

  • 어노테이션의 사적전 의미는 '주석'이라는 뜻이다.
  • 자바에서 사용될 때의 어노테이션은 코드 사이에 주석처럼 쓰여서 특 별한 의미, 기능을 수행하도록 하는 기술이다.
    - 프로그램에게 추가적인 정보를 제공해주는 메타데이터
    - 메타데이터(meta data): 데이터를 위한 데이터

어노테이션 용도

  • 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공
  • 소프트웨어 개발툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보 제공
  • 실행시 특정 기능을 실행하도록 정보를 제공

JPA 어노테이션

@Entity

entity 어노테이션은 데이터베이스의 테이블과 일대일로 매칭되는 객체단위이며 entity객체의 인스턴스 하나가 테이블에서 하나의 레코드 값을 의미한다. 그래서 객체의 인스턴스를 구분하기 위한 유일한 키값을 가지는데 이것은 테이블 상의 primary key와 같은 의미를 가지며 @id어노테이션으로 표기된다.

@Entity
public class food {
	...
}

@Id

JPA에서 Entity클래스 상에 Primary key를 명시적으로 표시해야 되는데 그것을 @Id 어노테이션을 이용해 PK를 지정한다.

public class food {
	@Id
	private Long Id;
}

@Column

Column 어노테이션은 객체 필드와 DB 테이블 컬럼을 맵핑한다.

public class food {
	@Id
    private Long id;
    @Column(nullable = false)
    private String foodName;
    @Column(nullable = false)
    private int price;
}

@Lombok

기본적으로 웹 애플리케이션에서 사용하는 VO 객체는 , DB 테이블의 column 과 같은 이름의 private 변수를 가지고, getter setter 메소드를 정의 한 후 toString 메소드를 정의한다. 하지만 프로젝트가 커지면 커질수록 위에 말한 변수 , 메소드들이 기하급수적으로 늘어날 것이고, 늘어나면 늘어날 수록 추가도 귀찮을 뿐더러 관리도 힘들어져 결국에는 유지보수가 힘들어진다. 위의 문제를 해결한 라이브러리가 lombok이다.

  • @toString
    toString() 메소드를 생성한다. @ToString(exclude={“제외값”})으로 제외시키고 싶은 값을 설정할 수 있다.
  • @RequiredArgsConstructor
    모든 멤버 변수를 초기화시키는 생성자를 생성한다.
  • @Getter , @Setter
    getter() setter() 메소드를 생성한다.
  • @EqualsAndHashCode
    equals(), hashCode() 메소드를 생성한다.
  • @Data
    위에 언급한 5가지 어노테이션 설정을 모두 포함한다.

@GeneratedValue(strategy = GenerationType.IDENTITY)

기본키 생성을 데이터베이스에게 위임하는 방식으로 id값을 따로 할당하지 않아도 데이터베이스가 자동으로 AUTO_INCREMENT를 하여 기본키를 생성해준다.

public class food {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
}

이것들 외에도 엄청 많은 것같은데 일단은 오늘 배운 Spring에서 중요해 보이는 몇가지만 골라봤다.
오늘부터 Spring공부를 본격적으로 시작했는데, 나중에 또 정리해서 TIL로 작성해봐야겠다.

profile
2025.04.01~

0개의 댓글