Entity 이해하기

su dong·2023년 7월 18일
0

개념

키워드 : 도메인 내 객체, 데이터베이스 테이블, 속성, 관계, 캡슐화

도메인 모델링에서, "Entity"는 도메인 내에서 고유하게 식별 가능하며, 독립적으로 존재하고, 시간에 따라 상태가 변경될 수 있는 실제 세계의 객체를 나타냅니다.

개념적으로, Entity는 데이터베이스의 테이블과 같이 보이는 경우가 많습니다. 예를 들어, '사용자(User)', '주문(Order)', '제품(Product)' 등이 각각 Entity가 될 수 있습니다. 각 Entity는 고유한 속성을 가지며, 이 속성들은 해당 Entity의 고유한 특성을 표현합니다. 예를 들어, '사용자' Entity는 '이름', '이메일', '주소' 등의 속성을 가질 수 있습니다.

또한, Entity들은 서로 관계를 가질 수 있습니다. 이러한 관계는 한 Entity가 다른 Entity에 어떻게 연결되는지를 나타냅니다. 예를 들어, '사용자'와 '주문' Entity 사이에는 '주문을 생성한 사용자'라는 관계가 있을 수 있습니다.

Entity는 도메인 모델을 구축하는 데 중요한 요소로, 애플리케이션의 비즈니스 로직을 표현하는 데 필요한 핵심 데이터와 동작을 캡슐화합니다. 이러한 Entity를 정의하고 조직화하는 것은 복잡한 시스템을 이해하고 구축하는 데 중요한 첫 걸음입니다.


@Entity

키워드 : JPA, 테이블, 데이터베이스와의 관계 정의

@Entity는 JPA(Java Persistence API)에서 사용되는 어노테이션입니다. 이는 클래스가 엔티티 또는 테이블과 연결되어 있음을 나타냅니다. @Entity 어노테이션이 붙은 클래스는 JPA가 관리하는 엔티티로 선언되며, 이를 통해 데이터베이스와의 상호작용을 처리합니다.

@Entity 어노테이션이 붙은 클래스의 각 인스턴스는 데이터베이스의 한 행을 나타냅니다. 클래스의 필드는 테이블의 열에 매핑되고, 이들의 값은 데이터베이스에서 직접 검색되거나 저장됩니다. 이러한 매핑은 @Column, @Id, @OneToMany, @ManyToOne 등의 다른 JPA 어노테이션을 사용하여 상세하게 정의할 수 있습니다.

@Entity 어노테이션이 가장 중요한 역할은 데이터베이스와의 관계를 정의하는 것입니다. 이를 통해 개발자는 복잡한 SQL 쿼리를 작성하지 않고도 데이터베이스와 통신하는 간결하고 직관적인 코드를 작성할 수 있습니다. 따라서 이는 개발 시간을 단축시키고 코드의 가독성과 유지 보수성을 향상시키는 데 도움이 됩니다.


코드 예시

package com.zerobase.account3.domain;

import com.zerobase.account3.type.AccountStatus;
import lombok.*;

import javax.persistence.*;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
//JPA, 테이블과 연결
public class Account {
    @Id
    @GeneratedValue
    private Long id;

    private String accountNumber;

    @Enumerated(EnumType.STRING)
    private AccountStatus accountStatus;
}
profile
사람들을 돕는 문제 해결사, 개발자 sudong입니다. 반갑습니다. tkddlsqkr21@gmail.com

2개의 댓글

comment-user-thumbnail
2023년 7월 18일

글 잘 봤습니다, 많은 도움이 되었습니다.

답글 달기
comment-user-thumbnail
2023년 7월 18일

너무 좋은 글이네요. 공유해주셔서 감사합니다.

답글 달기