반응형
POJO [Plain Old Java Object]
POJO는 특정 프레임워크나 라이브러리에 종속되지 않은, 순수한 자바 객체를 의미한다.
- 비즈니스 로직을 담은 일반적인 자바 객체로, 특정 인터페이스를 구현하거나 특정 클래스를 상속받지 않는다.
- 데이터를 담는 필드와 해당 데이터에 접근하기 위한 메서드를 갖는다.
- 가독성이 높고, 재사용이 용이하며 테스트하기 쉬운 코드를 작성할 수 있도록 도와준다.
public class Person {
private String name;
private int age;
// 생성자, 게터, 세터, toString 등의 메서드
}
DTO [Data Transfer Object]
DTO는 데이터 전송을 위한 객체로, 계층 간 데이터 교환을 위해 사용된다.
- 비즈니스 로직이 거의 없이 데이터 전송을 위한 객체로 주로 사용된다.
- 여러 필드로 이루어져 있어 데이터를 한 번에 전달하거나 받기 위해 사용된다.
- 주로 클라이언트와 서버 간, 또는 서비스 간의 데이터 교환을 위해 활용된다.
public class OrderDTO {
private Long orderId;
private String productName;
private int quantity;
// 생성자, 게터, 세터, toString 등의 메서드
}
DAO [Data Access Object]
DAO는 데이터베이스에 접근하기 위한 객체로, 데이터의 CRUD 작업을 담당한다.
- 데이터베이스와의 상호 작용을 위한 메서드를 정의하고 구현한다.
- 주로 데이터베이스와의 연결, 쿼리 실행, 결과 처리 등의 로직을 수행한다.
- 비즈니스 로직을 담당하지 않으며, 순수하게 데이터베이스와의 통신에 중점을 둔다.
public interface UserDao {
User findById(Long userId);
void save(User user);
void update(User user);
void delete(Long userId);
}
VO [Value Object]
VO는 값을 나타내는 객체로, immutable하며 동일한 값을 갖는 객체를 '동등'하다고 간주한다.
- 도메인 모델에서 간단한 값을 표현하기 위해 사용된다.
- 주로 불변 객체로 설계되어 안정성과 일관성을 유지하며 값의 변경을 방지한다.
equals()
와hashCode()
메서드를 오버라이드하여 객체 간의 동등성을 확인한다.
public class Address {
private String city;
private String street;
// 생성자, 게터, toString 등의 메서드
}
Entity
Entity는 데이터베이스에서 관리되는 엔티티로, 데이터베이스 테이블과 매핑되는 객체를 나타낸다.
- 데이터베이스의 한 행을 나타내며, 주로 JPA와 같은 ORM 기술과 함께 사용된다.
- 데이터베이스 테이블과 매핑되어 데이터의 영속성을 제공하며, 데이터베이스와의 상호 작용하는 비즈니스 로직을 포함할 수 있다.
- 식별자[Primary Key]를 갖고 있어 각각의 엔티티를 유일하게 식별할 수 있다.
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private double price;
// 생성자, 게터, 세터, toString 등의 메서드
}
반응형
'BackEnd > Spring Boot' 카테고리의 다른 글
[Spring Boot] DI (Dependency Injection; 의존성 주입) (0) | 2023.12.27 |
---|---|
[Spring Boot] Java Bean (1) | 2023.12.27 |