Spring/토비의 스프링
[토비의 스프링] 1.1 초난감 DAO
한뜽규
2025. 5. 6. 23:58
728x90
스프링을 사용하면서, 스프링을 깊게 공부해보고 싶다는 욕심이 있었다.
백엔드 개발자로 꾸준하게 성장하고 싶었기에, 이번 기회에 토비의 스프링을 사용하여 스프링의 처음부터 다시 보려고 한다.
책은 가격이 좀 나갔지만, 도안탄히엔님께서 주셨다.(감사합니다!!)
우선 DAO를 만들어보자.
DAO는 데이터베이스와 상호작용하며, 데이터를 조회하거나 조작하는 기능을 전담하는 클래스이다.
우선 사용자 정보를 저장하는 클래스이다.
public class User {
private String id;
private String name;
private String password;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
이렇게 필드가 private으로 직접 변경이 불가능하고, getter와 setter로 조작해야 하며 기본 생성자가 존재하는 오브젝트를 자바빈이라고 한다.
이렇게 만든 사용자의 정보 객체로 데이터베이스를 조작할 수 있도록 DAO 클래스를 만들어보자.
package seungkyu;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class UserDao {
public void add(User user) throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.cj.jdbc.Driver");
var connection = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/tobi",
"root",
"seungkyu");
PreparedStatement preparedStatement = connection.prepareStatement(
"insert into users(id, name, password) values(?,?,?)"
);
preparedStatement.setString(1, user.getId());
preparedStatement.setString(2, user.getName());
preparedStatement.setString(3, user.getPassword());
preparedStatement.executeUpdate();
preparedStatement.close();
connection.close();
}
public User get(String id) throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.cj.jdbc.Driver");
var connection = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/tobi",
"root",
"seungkyu");
PreparedStatement preparedStatement = connection.prepareStatement(
"select * from users where id = ?"
);
preparedStatement.setString(1, id);
var resultSet = preparedStatement.executeQuery();
resultSet.next();
var user = new User();
user.setId(resultSet.getString("id"));
user.setName(resultSet.getString("name"));
user.setPassword(resultSet.getString("password"));
resultSet.close();
preparedStatement.close();
connection.close();
return user;
}
}
이렇게 일단 JDBC 커넥션을 항상 열고 닫는 방법으로 DAO를 만들었다.
간단하게 메인 메서드에서 테스트를 해보았는데
이렇게 정상적으로 저장되는 것을 볼 수 있다.
정상적으로 작동은 하지만, 개선할 부분이 많은 코드라고 한다.
다음 챕터에서 수정해보며 알아보도록 하자.