DAO 정의
Data Access Object 의 약자로 데이터베이스의 data에 접근하기 위한 객체입니다.
DataBase 접근을 하기 위한 로직과 비지니스 로직을 분리하기 위해 사용합니다.
DAO의 경우는 DB와 연결할 Connection 까지 설정되어 있는 경우가 많습니다.
그래서 현재 많이 쓰이는 Mybatis 등을 사용할 경우 커넥션풀까지 제공되고 있기 때문에 DAO를 별도로 만드는 경우는 드뭅니다.
DAO 클래스 예제
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class TestDao {
public void add(TestDto dto) throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/test", "root", "root");
PreparedStatement preparedStatement = connection.prepareStatement("insert into users(id,name,password) value(?,?,?)");
preparedStatement.setString(1, dto.getName());
preparedStatement.setInt(2, dto.getValue());
preparedStatement.setString(3, dto.getData());
preparedStatement.executeUpdate();
preparedStatement.close();
connection.close();
}
}
public class PersonDTO {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
VO 정의
VO(Value Object) 는 DTO와 혼용해서 쓰이긴 하지만 미묘한 차이가 있습니다.
VO는 값 오브젝트로써 값을 위해 쓰입니다. 자바는 값 타입을 표현하기 위해 불변 클래스를 만들어서 사용하는데, 불변이라는 것은 readOnly 특징을 가집니다.
이러한 클래스는 중간에 값을 바꿀 수 없고 새로 만들어야 한다는 특징이 있습니다..
예를들어 Color클래스를 보면 Red를 표현하기 위해 Color.RED 등을 사용하며 getter기능만이 존재합니다.
비슷한 VO와 DTO 를 구분하자.
DTO와 VO의 공통점은 넣어진 데이터를 getter를 통해 사용하므로 주 목적은 같습니다. 그러나 DTO의 경우는 가변의 성격을 가진 클래스 입니다(setter 활용). 그에반해 VO는 불변의 성격을 가졌기에 차이점이 있습니다.
출처: https://lemontia.tistory.com/591
[JAVA] DAO, DTO, VO 차이
DAO 정의 Data Access Object 의 약자로 데이터베이스의 data에 접근하기 위한 객체입니다. DataBase 접근을 하기 위한 로직과 비지니스 로직을 분리하기 위해 사용합니다. DAO의 경우는 DB와 연결할 Connectio
lemontia.tistory.com
'Spring' 카테고리의 다른 글
WebSecurityConfigurerAdapter 오류 해결 (0) | 2022.07.09 |
---|---|
소셜 로그인 구현(구글) (0) | 2022.07.09 |