๐ง DAO๋?
DAO(Data Access Object)๋ DB๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ฑฐ๋ ์กฐ์ํ๋ ๊ธฐ๋ฅ์ ์ ๋ดํ๋๋ก ๋ง๋ ์ค๋ธ์ ํธ
๐ง DAO ๊ธฐ๋ณธ ๊ตฌ์กฐ
๋จผ์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ฝ๊ฒ ์ ์ฅํ๊ธฐ ์ํ ๊ฐ์ฒด๋ฅผ ์ํด User ํด๋์ค๋ฅผ ๋ง๋ค์ด์ค๋๋ค.
User Class
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;
}
}
User ํด๋์ค๋ฅผ ์ฌ์ฉํด DAO ํด๋์ค๋ฅผ ๋ง๋ค์ด์ค๋๋ค.
๐ Database์ ์ฐ๋ํ๊ธฐ ์ํด JDBC๋ฅผ ์ฌ์ฉํ ๊ฒ์ธ๋ฐ, ์ผ๋ฐ์ ์ธ ์์๋ ์๋์ ๊ฐ์ต๋๋ค.
- DB ์ฐ๊ฒฐ์ ์ํ Connection์ ๊ฐ์ ธ์จ๋ค.
- SQL์ ๋ด์ Statement(or PreparedStatement)๋ฅผ ๋ง๋ ๋ค.
- ๋ง๋ค์ด์ง Statement๋ฅผ ์คํํ๋ค.
- ์กฐํ์ ๊ฒฝ์ฐ SQL ์ฟผ๋ฆฌ์ ์คํ ๊ฒฐ๊ณผ๋ฅผ ResultSet์ผ๋ก ๋ฐ์์ ์ ๋ณด๋ฅผ ์ ์ฅํ ์ค๋ธ์ ํธ(User)์ ์ฎ๊ฒจ์ค๋ค.
- ์์ ์ค์ ์์ฑ๋ Connection, Statement, ResultSet ๊ฐ์ ๋ฆฌ์์ค๋ ์์ ์ ๋ง์น ํ ๋ฐ๋์ ๋ซ์์ค๋ค.
- JDBC API๊ฐ ๋ง๋ค์ด๋ด๋ ์์ธ๋ฅผ ์ก์์ ์ง์ ์ฒ๋ฆฌํ๊ฑฐ๋, throws๋ฅผ ์ ์ธํด ์์ธ๊ฐ ๋ฐ์ํ๋ฉด ๋ฉ์๋ ๋ฐ์ผ๋ก ๋์ง๊ฒ ํ๋ค.
UserDao Class
public class UserDao {
public void add(User user) throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");
Connection c = DriverManager.getConnection("jdbc:mysql://localhost:3306/spring?autoReconnect=true&useSSL=false\";","root","@min753951");
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.jdbc.Driver");
Connection c = DriverManager.getConnection("jdbc:mysql://localhost:3306/spring?autoReconnect=true&useSSL=false\";","root","@min753951");
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;
}
}
DAO ๊ฐ์ฒด๊ฐ ์ ์๋ํ๋์ง ํ ์คํธํ๊ธฐ ์ํด์๋ main()์ ์ฌ์ฉํด ๊ฒ์ฆํ ์ ์์ต๋๋ค.
Main Class
public static void main(String[] args) {
UserDao dao = new UserDao();
user.setId("alstmdsha");
user.setName("๋ฐ๋ฏผ์ก");
user.setPassword("123456");
dao.add(user);
System.out.println(user.getId()+" ๋ฑ๋ก ์ฑ๊ณต ");
User user2 = dao.get(user.getId());
System.out.println(user2.getName());
System.out.println(user2.getPassword());
System.out.println(user2.getId() + " ์กฐํ ์ฑ๊ณต ");
}
๐ main() ๋ฉ์๋๋ฅผ ์คํํ๋ฉด ์๋์ ๊ฐ์ ํ ์คํธ ์ฑ๊ณต ๋ฉ์์ง๋ฅผ ์ป์ ์ ์์ต๋๋ค.
๐งพ ์ ๋ฆฌ
์ง๊ธ๊น์ง ๊ฐ๋จํ DAO์ฝ๋๋ฅผ ๋ง๋ค์ด ๋ณด์์ต๋๋ค.
ํ์ง๋ง ์ด DAO ํด๋์ค์๋ ๊ฐ์ฒด์งํฅ ์ค๊ณ ์์น(SOLID)๋ค ์ค ๊ฐ๋ฐฉ ํ์ ์์น์ ๋ง์กฑํ์ง ๋ชปํ๊ณ ์์ต๋๋ค.
๊ฐ๋ฐฉ ํ์ ์์น์ด๋?
'ํด๋์ค๋ ๋ชจ๋์ ํ์ฅ์๋ ์ด๋ ค ์์ด์ผ ํ๊ณ ๋ณ๊ฒฝ์๋ ๋ซํ ์์ด์ผ ํ๋ค'
์ฆ, ์ด Dao ํด๋์ค๋ฅผ ๋ค์ํ ํด๋ผ์ด์ธํธ๋ค์ด ์ฌ์ฉํ ํ ๋ฐ,,,,
๋ชจ๋ ํด๋ผ์ด์ธํธ๋ค์ด ๋ค ๊ฐ์ DB connect ๋ฐฉ์์ ์ฌ์ฉํ์ง ์์ ๊ฒ์ ๋๋ค.
๋ง์ฝ ๋ชจ๋ ํด๋ผ์ด์ธํธ๋ค์ DB connect ๋ฐฉ์์ด ๋ค๋ฅด๋ค๋ฉด, ๋งค๋ฒ Dao ๊ฐ์ฒด๋ฅผ ๊ณ ์ณ์ฃผ์ด์ผ ํ ๊ฒ์ ๋๋ค.
ํ์ง๋ง ๋๋ถ๋ถ์ ๊ฐ๋ฐ์๋ค์ ๊ณ ๊ฐ์๊ฒ ์์ค๋ฅผ ์ง์ ๊ณต๊ฐํ๊ณ ์ถ์ง ์์ ํ๊ธฐ ๋๋ฌธ์,
ํด๋ผ์ด์ธํธ๋ค์ด ์ํ๋ DB connection ๋ฐฉ์์ ์๋์ ๊ฐ์ด ์๊ตฌ์ ๋ง๊ฒ ์์ฑํด์ค์ผ ํฉ๋๋ค.
์ฐธ๊ณ ๋ฌธ์ :
ํ ๋น์ ์คํ๋ง 3 (์ด์ผ๋ฏผ)
'Back-end > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] ๊ฐ์ฒด์งํฅ์ DAO - ํ์ฅ (์ ๋ต ํจํด) (0) | 2020.07.27 |
---|---|
[Spring] ๊ฐ์ฒด์งํฅ์ DAO - ๋ถ๋ฆฌ (ํ ํ๋ฆฟ ๋ฉ์๋ ํจํด) (0) | 2020.07.27 |
[Spring] @Autowired vs @Resource vs @Inject (0) | 2020.07.14 |
[Spring] @Bean ๊ณผ @Component ์ฐจ์ด (0) | 2020.07.14 |
[Spring] POJO ๊ตฌ์ฑํด๋ณด๊ธฐ (0) | 2020.07.12 |