Spring Entity 작성시 사용하는 어노테이션
1. @Entity
- 엔티티로 사용할 클래스에 엔티티임을 명시하는 어노테이션
2. @Table
- @Table(name = "board") name 속성을 이용해서 해당 엔티티가 매핑하는 데이터베이스 테이블이 무엇인지 지정
- 이렇게 작성된다면, 해당 Board 클래스는 데이터베이스에 "board" 테이블에 저장된다.
@Table(name = "board")
@Entity
public class Board{....}
@Entity 에도 name이라는 속성이 있고, @Table에도 name이라는 속성이 있다.
그렇다면 이 둘의 차이는 무엇일까?
- @Entity(name ="")의 경우 말그대로 엔티티의 이름을 정할때 사용됩니다. 이는 HQL에서 엔티티를 식별할 이름을 정합니다.
- @Table(name ="")의 경우 Database에 생성될 table의 이름을 지정할때 사용됩니다.
- @Table이 없고 @Entity(name ="")만 존재하는 경우, @Entity의 name 속성에 의해, Entity와 Table 이름이 모두 결정됩니다.
3. @Getter
-
lombok 라이브러리 내에 존재하며, getter 메소드를 대신할 수 있다.
-
대신 @Setter 메소드는 작성하지 않았다. Setter를 무분별하게 남용하다 보면 여기저기서 객체(엔티티)의 값을 변경할 수 있으므로 객체의 일관성을 보장할 수 없다. 그리고 setter는 개별적으로 여러 개의 값을 변경하게 될 경우 그 의도를 알기 힘들다. 따라서 값을 바꾸고자 한다면 메소드를 작성하는 편이 더 좋다고 생각한다.
4. @NoArgsConstructor(access = AccessLevel.PROTECTED)
-
파라미터가 없는 기본 생성자를 생성
-
기본 생성자의 접근 제어를 PROTECTED 단계로 설정하게 된다면, new로 무분별한 객체 생성에 대해 한번 더 체크할 수 있게 된다. 예를 들어 회원에서 이메일, 아이디, 비밀번호를 모두 받게 되어있는데 하나만 받게끔 해서 객체를 생성하는 일을 방지할 수 있다.
-
따라서 생성자에 @Builder를 설정하게 된다면, 해당 생성자를 사용하는 Builder가 따로 생성되어 의미있는 객체만 생성할 수 있게 된다.
Author And Source
이 문제에 관하여(Spring Entity 작성시 사용하는 어노테이션), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@zamotter/Spring-Entity-작성시-사용하는-어노테이션저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)