OMR이 여기서 파생된 것 같다
Table Data Gateway는 데이터베이스 테이블에 대한 모든 접근을 처리하는 객체입니다. 한 테이블의 모든 SQL 작업을 단일 클래스에서 캡슐화하는 것이 특징입니다.
은행 창구 직원과 비슷합니다:
public class CustomerGateway {
private Connection connection;
// 조회 메서드
public List<CustomerDTO> findAll() {
String sql = "SELECT * FROM customers";
List<CustomerDTO> customers = new ArrayList<>();
try (PreparedStatement stmt = connection.prepareStatement(sql);
ResultSet rs = stmt.executeQuery()) {
while (rs.next()) {
CustomerDTO customer = new CustomerDTO(
rs.getLong("id"),
rs.getString("name"),
rs.getString("email")
);
customers.add(customer);
}
}
return customers;
}
// 특정 조건 조회
public CustomerDTO findById(Long id) {
String sql = "SELECT * FROM customers WHERE id = ?";
try (PreparedStatement stmt = connection.prepareStatement(sql)) {
stmt.setLong(1, id);
ResultSet rs = stmt.executeQuery();
if (rs.next()) {
return new CustomerDTO(
rs.getLong("id"),
rs.getString("name"),
rs.getString("email")
);
}
}
return null;
}
// 삽입 메서드
public void insert(CustomerDTO customer) {
String sql = "INSERT INTO customers (name, email) VALUES (?, ?)";
try (PreparedStatement stmt = connection.prepareStatement(sql)) {
stmt.setString(1, customer.getName());
stmt.setString(2, customer.getEmail());
stmt.executeUpdate();
}
}
// 수정 메서드
public void update(CustomerDTO customer) {
String sql = "UPDATE customers SET name = ?, email = ? WHERE id = ?";
try (PreparedStatement stmt = connection.prepareStatement(sql)) {
stmt.setString(1, customer.getName());
stmt.setString(2, customer.getEmail());
stmt.setLong(3, customer.getId());
stmt.executeUpdate();
}
}
}