POJO (Plain Old Java Object)
POJO는 단순히 데이터를 나타내는 클래스이며 특정한 인터페이스를 구현하거나, 특정한 클래스를 상속받지 않는 단순한 클래스를 의미한다. 주로 필드, 메소드, 생성자 등을 포함할 수 있으며, 비즈니스 로직 처리 보다는 데이터를 저장하고 전달하는데 사용된다.
@Data
public class Medication {
private String entpName;
private String itemName;
private String efcyQesitm;
private String useMethodQesitm;
private String atpnWarnQesitm;
private String atpnQesitm;
private String intrcQesitm;
private String seQesitm;
private String depositMethodQesitm;
private String itemImage;
}
DTO (Data Transfer Object)
데이터 전송 객체(Data Transfer Object, DTO)는 계층간 데이터 교환을 위한 자바 Beans 이다.
DTO도 POJO의 한 형태로, 시스템 간 또는 계층 간의 데이터 전송을 위해 사용된다. 보통 DTO는 각 필드에 대한 getter/setter 메소드를 포함한다. DTO는 보통 계층 간의 데이터 전송을 목적으로 사용되며, 각 필드를 캡슐화하여 사용하는 POJO와 다소 차이가 있다.
여기서 계층이란 Controller, Service, DAO 등을 의미한다.
class Item {
@JsonProperty("entpName")
private String entpName;
@JsonProperty("itemName")
private String itemName;
@JsonProperty("efcyQesitm")
private String efcyQesitm;
@JsonProperty("useMethodQesitm")
private String useMethodQesitm;
@JsonProperty("atpnWarnQesitm")
private String atpnWarnQesitm;
@JsonProperty("atpnQesitm")
private String atpnQesitm;
@JsonProperty("intrcQesitm")
private String intrcQesitm;
@JsonProperty("seQesitm")
private String seQesitm;
@JsonProperty("epositMethodQesitm")
private String depositMethodQesitm;
@JsonProperty("itemImage")
private String itemImage;
// getter and setter methods
// ...
}
class Header {
@JsonProperty("resultCode")
private String resultCode;
@JsonProperty("resultMsg")
private String resultMsg;
// getter and setter methods
// ...
}
class Body {
@JsonProperty("items")
private List<Item> items;
}
public class ResponseDTO {
@JsonProperty("header")
private Header header;
@JsonProperty("body")
private Body body;
// getter and setter methods
// ...
}
+ DAO (Data Access Object)
데이터베이스에 접근하는 코드를 캡슐화하기 위한 설계 패턴