테이블 한줄당 하나의 CURD가 가능한 게이트웨이 객체
row와 대응하는 객체를 생성해 줄 Finder 도 따로 만들어서 사용함 → 펙토리 패턴이 있는 이유랑 비슷한 느낌, 다형성을 위해서
Row Data Gateway는 데이터베이스의 한 행(row)을 객체로 표현하는 패턴입니다. 마치 데이터베이스 테이블의 행이 거울에 비친 것처럼 동작합니다.
데이터베이스의 한 레코드를 표현하는 객체가 해당 데이터의 조회(finder), 삽입(insert), 수정(update), 삭제(delete) 메서드를 모두 포함합니다.
식당의 주문서를 생각해보세요:
public class PersonGateway {
private Long id;
private String name;
private int age;
private String email;
// finder 메서드
public static PersonGateway findById(Long id) {
String sql = "SELECT * FROM persons WHERE id = ?";
// DB 조회 로직
return new PersonGateway(/* 조회된 데이터 */);
}
// insert 메서드
public void insert() {
String sql = "INSERT INTO persons (name, age, email) VALUES (?, ?, ?)";
// DB 삽입 로직
}
// update 메서드
public void update() {
String sql = "UPDATE persons SET name = ?, age = ?, email = ? WHERE id = ?";
// DB 수정 로직
}
// delete 메서드
public void delete() {
String sql = "DELETE FROM persons WHERE id = ?";
// DB 삭제 로직
}
}