Spring MVC

Spring MVC)게시판 만들기 - Entity 생성

beginner-development 2025. 2. 5. 18:17

@Entity : JPA를 사용해서 테이블과 매핑할 시에 필수적으로 사용해야한다.

※주의!

  • 기본 생성자는 필수적으로 들어가야한다.(파라미터가 없는 public, protected 생성자)
  • final, enum, interface, inner클래스에는 사용할 수 없다.
  • 저장할 필드에 final은 사용하면 안된다.

@Table : 엔티티와 매핑할 테이블을 지정한다. 이 때 name속성은 메핑할 테이블 이름을 지정해주며 지정해주지 않으면 엔티티 이름을 테이블 이름으로 지정한다.

 

@NoArgsConstructor : Lombok 라이브러리 내에 있는 기능으로 파라미터가 없는 디폴트 생성자를 자동으로 생성한다. 이 어노테이션을 사용하면, 클래스에 명시적으로 선언된 생성자가 없더라도 인스턴스를 생성할 수 있다.

 

@Getter/Setter : 접근자/설정자를 자동으로 생성해 주는 어노테이션이다. 손쉽게 데이터를 가져오고, 변경할 수 있기에 편해 보이지만 그렇기에 문제가 생긴다. @Getter는 사용시 데이터에 변경이 생기지 않지만 @Setter는 무분별하게 사용하면 데이터가 이곳 저곳에서 변경되기 때문에 이후에 데이터 변경점을 찾기 힘들어지고 그렇게되면 유지보수에 치명적이게 된다. 따라서 Setter 사용시에는

  • 최대한 Setter사용은 지양하되 어쩔 수 없는 경우에만 사용한다.
  • 생성자를 사용한 데이터 주입을 우선으로 하고 setter사용 시 의미 있는 이름을 부여하여 사용한다.

※Setter대신 Builder를 사용하면 된다고 하는데 아직 Builder사용이 익숙하지 않아서 간단한 게시판 프로젝트에는 setter를 사용하고 이후에 Builder에 대해 다뤄보려고 한다.

 

@Data : 모든Constructor 어노테이션과 ToString, Getter, Setter를 전부 생성해 주는 어노테이션이다. 이 어노테이션은 잘못 사용하면 @ToString 어노테이션으로 인해 연관관계에 따라 무한루프가 돌 수 있기때문에 사용은 자제해야한다.

 

@Id : 식별자 필드로, 엔티티의 필드를 테이블의 기본 키에 매핑하는 역할을 한다.

 

@GeneratedValue : 자동생성 전략을 명시하는데 사용된다. 즉, 키가 자동생성되는것을 도와주는 어노테이션이다.

 

@Column : 엔티티의 필드를 테이블의 칼럼에 매핑시켜준다.