프로젝트

13일차

사랑박 2023. 3. 4. 18:35

오늘은 Part2. 게시판 서비스 강의의 `데이터베이스 접근 로직 테스트 정의2` 부분을 학습하였다.
 
오늘에서야 드디어 엔티티를 만드는 과정을 시작했다.
 

엔티티에 @Setter 사용 금지

엔티티를 작성할 떄 @Setter를 붙이지 않는다. 무분별하게 @Setter를 사용하면 여기저기서 엔티티의 값을 변경할 수 있다. 따라서 데이터를 변경해야하면 @Setter를 사용하지 말고, 따로 메소드를 작성하는 것이 객체의 일관성을 보장할 수 있는 안전한 방법이다.
 

엔티티 기본 생성 접근자를 protected로

기본 생성자 접근자를 protected로 변경하면 new Entity() 사용을 막을 수 있어서 객체의 일관성을 더 유지할 수 있다.
롬복을 사용한다면 엔티티에 

@NoArgsConstructor(access = AccessLevel.PROTECTED)

다음과 같은 애노테이션 설정을 통해 설정할 수 있다.

 

스프링부트 JPA 매핑 어노테이션

@Entity
클래스에 선언하면 그 클래스는 JPA가 관리한다. DB 테이블과 클래스를 매핑한다면 반드시 이 어노테이션을 붙여주어야 한다.
 
@Table
매핑할 테이블을 지정한다.
 

JPA 인덱스 사용하기

@Index 어노테이션을 사용해서 인덱스를 지정할 수 있다.

@Table(indexes = {
        @Index(columnList = "title"),
        @Index(columnList = "hashtag"),
        @Index(columnList = "createdAt"),
        @Index(columnList = "createdBy")
})

 

PK 설정하기

PK를 나타내기 위해 @Id 어노테이션을 사용하고, 생성 전략을 정의하기 위해 @GeneratedValue를 사용한다. @GeneratedValue의

strategy 속성의 default 값은 GenerationType.AUTO인데 IDENTITY로 바꿔주어야한다. MySQL의 auto increment 생성방식이 IDENTITY 방식이기 때문이다.

@GeneratedValue(strategy = GenerationType.IDENTITY)

 

 

'프로젝트' 카테고리의 다른 글

15일차  (0) 2023.03.06
14일차  (0) 2023.03.05
12일차  (0) 2023.03.03
11일차  (0) 2023.03.02
10일차  (0) 2023.03.01