Spring Data JPA

Spring Data JPA - Entity

stophyeon 2023. 7. 24. 18:04
728x90

Entity란

Entity란 실제 DB와 연동되는 자바객체입니다.

Entity => Table

DB의 Table이 전체 Entity이고 Table의 Column들이 각 필드값이라고 생각하시면 됩니다.
Entity 객체 각각이 하나의 행에 채워집니다. 즉 DB에 Data가 저장되는 것입니다.

 

 

Entity annotation(@)

@Entity -  클래스가 엔티티임을 알려줍니다
@Id - 아래 필드가 PK에 해당하는 값이라는 것을 알려줍니다.
@GeneratedValue(strategy=GenerationType.IDENTITY) - Id값을 자동으로 1씩 증가시켜줍니다.
@Column -  각 Column들의 속성을 설정(ex) name/insertable/....)
@Enumerated - Entity필드에 enum 타입을 사용한다는것을 알려줍니다.
(value에는 STRING을 쓰는걸 추천합니다 이유는 enum 안의 값들이 선언된 순서에 따라 값이 달라지기 때문입니다.)
@Table - 클래스 위에 사용해 Table의 이름,인덱스등의 설정을 할 수 있습니다.

 

 

Entity - Setter 지양

Entity에는 Setter를 사용하지않고 메소드를 사용해 값을 초기화하거나 생성자를 통해 값을 초기화합니다.
Setter를 사용하지않는 이유는 여러가지이지만 가독성의 문제가 큽니다
Setter를 사용하는 때는 객체의 값을 Update하거나 Insert할 때인데 두 경우를 구분할 수 없습니다.
하지만 메소드나 생성자로 값을 초기화하려고 해도 값을 직접 넣어줘야 하기때문에 DTO객체를 사용합니다.
DTO란 순수객체로 값을 옮겨주는 역할을 합니다.
DTO의 값을 Entity로 변형해서 Entity값을 초기화하는 방법을 선호합니다.
어느 layer에서 DTO를 Entity로 변형하는지는 개발자에 따라 다르지만 거의 Service layer에서 바꿉니다.

 

 

 

 

 

'Spring Data JPA' 카테고리의 다른 글

QueryDSL  (0) 2024.02.28
N+1  (0) 2024.02.18
연관 관계  (0) 2024.01.11
Spring Data JPA 동작 과정  (0) 2024.01.10
Spring Data JPA - 영속성컨텍스트  (0) 2023.07.26