책/토비의 스프링 3.1 vol.1 스프링의 이해와 원리
1장. 오브젝트와 의존 관계 - 1.1 초난감 DAO
lroot
2023. 4. 9. 20:12
728x90
반응형
책에서는 나온 예제이다.
해당 DAO 코드는 잘못되었다고 나온다.
내가 생각해도 그렇다. 이유는 dao class에 dbconfig도 같이 들어있기 때문이다.
만약 등록과 조회 말고 다른 메소드도 필요하고 계속 추가가 되고, DB의 사용자나 DB가 mysql이 아닌 Oracle로 변경되었을 때 메소드안의 dbconfig 설정은 전부 변경되어야 한다.
이렇게
1. USERS 테이블
더보기
MySql
create table users(
Id varchar(10) primary key,
Name varchar(20) not null,
Password varchar(20) not null
);
2. Vo
package com.spring.toby.vo;
public class User {
String id;
String name;
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;
}
}
3. Dao
package com.spring.toby.dao;
import com.spring.toby.vo.User;
import java.sql.*;
public class UserDao {
public void add(User user) throws ClassNotFoundException, SQLException{
Class.forName("com.mysql.cj.jdbc.Driver");
Connection c = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/toby?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC","root","123456!");
PreparedStatement ps = c.prepareStatement(
"insert into users(id,name,password) values (?,?,?)");
ps.setString(1,user.getId());
ps.setString(2,user.getName());
ps.setString(3,user.getPassword());
ps.executeUpdate();
ps.close();
c.close();
}
public User get(String id) throws ClassNotFoundException,SQLException{
Class.forName("com.mysql.cj.jdbc.Driver");
Connection c = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/toby?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC","root","123456!");
PreparedStatement ps = c.prepareStatement(
"select * from users where id = ?");
ps.setString(1,id);
ResultSet rs = ps.executeQuery();
rs.next();
User user = new User();
user.setId(rs.getString("id"));
user.setName(rs.getString("name"));
user.setPassword(rs.getString("password"));
rs.close();
ps.close();
c.close();
return user;
}
}
github : https://github.com/dlrms6172/toby/tree/3ba525877bb83c262d6bebf53d2d4358e53934f8