1. VO (Value Object)
- VO는 주로 값 객체를 의미하고 생성된후 값은 불변한다.
public class Money {
private final int amount;
public Money(int amount) {
this.amount = amount;
}
public int getAmount() {
return amount;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Money money = (Money) obj;
return amount == money.amount;
}
@Override
public int hashCode() {
return Integer.hashCode(amount);
}
}
2.DAO(Data Access Object)
- 주로 데이터베이스에 접근하여 데이터를 조회, 삽입, 수정, 삭제하는 작업을 담당한다.
public class UserDAO {
private Connection connection;
public UserDAO() {
this.connection = DatabaseConnection.getConnection();
}
public void save(User user) {
String query = "INSERT INTO users (id, name) VALUES (?, ?)";
try (PreparedStatement stmt = connection.prepareStatement(query)) {
stmt.setInt(1, user.getId());
stmt.setString(2, user.getName());
stmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
public User findById(int id) {
String query = "SELECT * FROM users WHERE id = ?";
try (PreparedStatement stmt = connection.prepareStatement(query)) {
stmt.setInt(1, id);
ResultSet rs = stmt.executeQuery();
if (rs.next()) {
return new User(rs.getInt("id"), rs.getString("name"));
}
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
}
3. DTO (Data Transfer Object)
- DTO는 일반적으로 데이터를 담고 있는 필드만 포함하고, 비즈니스 로직을 포함하지 않는다
public class UserDTO {
private int id;
private String name;
public UserDTO(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
}