[SpringBoot 구조] Entity 설명 및 정의 / 어노테이션
2023. 12. 22. 17:37ㆍSpringBoot+JPA
반응형
더보기
[목차]
- Entity 정의
- Entity 구조
- Entity에 사용되는 어노테이션 종류
Entity 정의
자바 어플리케이션에서 관계형 데이터베이스의 데이터를 객체로 표현하는 데 사용
엔터티 객체를 통해 데이터를 조작하고 관리 가능
주로 기본 키를 가짐. 기본 키는 데이터베이스 테이블의 기본 키와 매핑
데이터베이스의 특정 테이블과 매핑
Entity 구조 및 작성 방법
@Id 어노테이션을 사용하여 기본 키를 지정
@GeneratedValue 어노테이션을 사용하여 기본 키의 값을 자동으로 생성 지정
@Entity
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Table(name = "product")
@SequenceGenerator(
name = "product_SEQ",
sequenceName = "product_SEQ",
initialValue = 1,
allocationSize = 1
)
public class ProductEntity extends BaseEntity {
//기본키
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "product_SEQ")
private Integer productId;
}
👉 개발자가 테이블을 생성해서 운영하고 싶은 경우,
Application에 DDL을 none로 설정, 수동으로 테이블 생성
Entity 사용 어노테이션
@Entity | 해당 클래스가 JPA 엔터티임을 나타냄 관계형 데이터베이스의 테이블을 나타내는 데 사용 엔터티의 각 인스턴스는 테이블의 한 행을 나타냄 |
@Getter | 롬복(Lombok) 라이브러리의 일부 클래스의 모든 필드에 대한 getter 메서드를 자동으로 생성 지루한 코드를 줄이는 데 도움 |
@Setter | 롬복 라이브러리에서 제공되며 클래스의 모든 필드에 대한 setter 메서드를 생성 |
@AllArgsConstructor | 롬복 어노테이션 클래스의 모든 필드에 대한 매개변수를 사용하는 생성자를 자동으로 생성 주로 모든 필드가 초기화된 객체를 생성하는 데 사용 |
@NoArgsConstructor | 롬복 어노테이션은 매개변수가 없는 생성자를 자동으로 생성 |
@Builder | 롬복에서 제공 클래스에 대한 빌더 패턴을 생성 |
@Table(name = "테이블명") | 어노티된 엔터티에 매핑되는 데이터베이스 테이블의 세부 정보를 지정하는 데 사용 테이블의 이름을 설정 |
@SequenceGenerator | 데이터베이스 시퀀스를 기반으로 한 기본 키 생성 전략을 정의 주로 @GeneratedValue 어노테이션과 함께 사용되어 기본 키의 생성 전략을 지정하는 데에 활용 |
@ToString 사용 금지
→ 로깅이나 디버깅 목적으로 필요한 경우에는 필요한 정보만을 노출하도록 제한
Lazy Loading 문제 | 지연 로딩(Lazy Loading) 설정이 되어 있던 엔터티의 연관된 엔터티들이 강제적으로 로딩되어 성능 이슈가 발생 |
무한 루프 | 두 개의 엔터티가 서로를 참조하고 있을 때 toString()을 호출하면 상호참조로 인해 무한 루프에 빠질 수 있음 |
보안 문제 | 객체의 내부 상태를 노출 |
문자열로 표현 | 엔터티의 필드들이나 연관된 엔터티들의 데이터를 노출 |
@id | 테이블의 기본키를 지정 |
@GeneratedValue | 기본키의 생성 전략 |
@Column | 변수와 매핑할 필드명 |
@Enumerated | 열거형 타입 적용 |
@Transient | 필드와 매핑에서 제외 |
@CreationTimestamp | 삽입시 시간 자동 저장 |
@UpdateTimestamp | 수정시 시간 자동 저장 |
@CreateDate | 엔티티 생성시 시간 자동 저장 |
@LastModifiedData | 엔티티값 변경시 시간 자동 저장 |
@Temporal | 날짜 타임 매핑 |
@GeneratedValue의 생성 전략
GenerationType.AUTO | JPA는 데이터베이스에 맞는 적절한 기본 키 생성 전략을 자동으로 선택 |
GenerationType.IDENTITY | 기본키 생성을 데이터베이스에 위임 엔티티가 데이터베이스에 저장될 때, 데이터베이스는 자동으로 다음 사용 가능한 기본 키 값을 할당 |
GenerationType.SEQUENCE | auto_increment와 동일(자동증가) 일반적으로 숫자 시퀀스를 만들고 번호를 할당하는 데 사용 |
@Column 어노테이션 속성
name | 필드명 |
unique | 제약조건 |
insertable | 삽입가능 |
updateable | 수정가능 |
length | 필드의 길이(생략시 255바이트) |
nullable | null값 허용 |
columnDefinition | 직접 기술 |
반응형
'SpringBoot+JPA' 카테고리의 다른 글
[SpringBoot 구조] Controller 설명 및 정의 / 어노테이션 (0) | 2023.12.31 |
---|---|
[SpringBoot 구조] Service 설명 및 정의 / 어노테이션 (0) | 2023.12.31 |
[SpringBoot 구조] Repository 설명 및 정의 / 어노테이션 (0) | 2023.12.31 |
[SpringBoot 구조] DTO 설명 및 정의 / 어노테이션 (0) | 2023.12.31 |
[SpringBoot 구조] - Entity / DTO / Repository / Service / Controller (0) | 2023.12.20 |