** ๐DAO ์ค๊ณ (DB ์ ๊ทผ ๋ก์ง ๊ตฌํ) **
DB์ ์์ ํ๊ณ ํจ์จ์ ์ผ๋ก ์ ๊ทผํ๋ DAO ๊ตฌ์กฐ ์ ๋ฆฌ
insert
, select
๋ฉ์๋ ๊ตฌํ ์์ + ๊ธฐ์ ๋ฉด์ ๋๋น๊น์ง
๐งฉ ๋ชฉ์ฐจ
- DAO๋ ๋ฌด์์ธ๊ฐ?
- DAO์ ์ญํ ๊ณผ ์ฅ์
- DAO ํด๋์ค ๊ธฐ๋ณธ ๊ตฌ์กฐ
- ์ค์ ํ๋ฆ๋ (Servlet โ DTO โ DAO โ DB)
- ์์ ์ฝ๋ (insert & select)
- ๊ธฐ์ ๋ฉด์ ๋๋น ํต์ฌ ์์ฝ
- ๋ง๋ฌด๋ฆฌ ์์ฝ + Notion ์์ฑ ํ
โ
1. DAO๋?
ํญ๋ชฉ |
์ค๋ช
|
DAO (Data Access Object) |
DB์ ์ง์ ์ฐ๊ฒฐ๋์ด ๋ฐ์ดํฐ๋ฅผ CRUD ์ฒ๋ฆฌํ๋ ํด๋์ค |
์์น |
Model ๊ณ์ธต์ ํฌํจ (MVC ๊ตฌ์กฐ์ M ๋ถ๋ถ) |
ํน์ง |
SQL์ ์คํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ฒ๋ฆฌํ๋ ์ ์ฉ ํด๋์ค |
โ
2. DAO์ ์ญํ ๊ณผ ์ฅ์
์ญํ |
์ค๋ช
|
๐ฏ DB ์ ๊ทผ ์ ๋ด |
DB ์ฐ๊ฒฐ, SQL ์คํ, ๊ฒฐ๊ณผ ์ฒ๋ฆฌ |
๐ DTO์ ์ฐ๋ |
๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด DTO ์ฌ์ฉ |
๐ฆ ์ฌ์ฌ์ฉ ๊ฐ๋ฅ |
DAO ํ๋๋ก insert, select, update, delete ๊ด๋ฆฌ ๊ฐ๋ฅ |
๐งผ ์ฝ๋ ๋ถ๋ฆฌ |
๋น์ฆ๋์ค ๋ก์ง(Controller)๊ณผ DB ๋ก์ง์ ๋ถ๋ฆฌํจ์ผ๋ก์จ ์ ์ง๋ณด์ ์ฉ์ด |
โ
3. DAO ํด๋์ค ๊ธฐ๋ณธ ๊ตฌ์กฐ โ๏ธ
public class MemberDAO {
// DB ์ ์ฅ
public void insert(MemberDTO dto) {
// Connection โ SQL โ execute
}
// DB ์กฐํ
public List<MemberDTO> selectAll() {
// SQL โ ResultSet โ DTO ๋ฆฌ์คํธ๋ก ๋ฐํ
}
}
โ
4. ์ค์ ํ๋ฆ ์์ ๐ฏ
[form.jsp]
โฌ๏ธ ์ฌ์ฉ์ ์
๋ ฅ
[Servlet]
โฌ๏ธ ์
๋ ฅ๊ฐ โ DTO ์ ์ฅ
[DAO]
โฌ๏ธ insert(dto)
[DB]
โฌ๏ธ selectAll() โ DTO ๋ชฉ๋ก ๋ฐํ
[Servlet โ JSP]
โฌ๏ธ ํ๋ฉด์ ์ถ๋ ฅ
โ
5. ์์ ์ฝ๋ (ํ์ ๋ฑ๋ก + ์ ์ฒด ๋ชฉ๋ก ์กฐํ)
๐ insert ๊ตฌํ (ํ์ ๋ฑ๋ก)
public void insert(MemberDTO dto) {
try {
Connection conn = DB.getConnection();
String sql = "INSERT INTO members(name, email) VALUES (?, ?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, dto.getName());
ps.setString(2, dto.getEmail());
ps.executeUpdate();
conn.close();
} catch(Exception e) {
e.printStackTrace();
}
}
๐ selectAll ๊ตฌํ (ํ์ ์ ์ฒด ๋ชฉ๋ก)
public List<MemberDTO> selectAll() {
List<MemberDTO> list = new ArrayList<>();
try {
Connection conn = DB.getConnection();
String sql = "SELECT * FROM members ORDER BY id DESC";
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
while(rs.next()) {
MemberDTO dto = new MemberDTO();
dto.setId(rs.getInt("id"));
dto.setName(rs.getString("name"));
dto.setEmail(rs.getString("email"));
list.add(dto);
}
conn.close();
} catch(Exception e) {
e.printStackTrace();
}
return list;
}
๐ DBConnection ํด๋์ค ์์ (๊ณตํต ์ฐ๊ฒฐ ํด๋์ค)
public class DB {
public static Connection getConnection() throws Exception {
Class.forName("org.mariadb.jdbc.Driver");
return DriverManager.getConnection(
"jdbc:mariadb://localhost:3306/dbname", "user", "password"
);
}
}
โ
6. ๊ธฐ์ ๋ฉด์ ๋๋น ํต์ฌ ์์ฝ
์ง๋ฌธ |
์์ ์ ๋ฆฌ |
DAO๋ ๋ฌด์์ธ๊ฐ์? |
DB ์์
(insert, select ๋ฑ)์ ๋ด๋นํ๋ ํด๋์ค |
DTO์ DAO ์ฐจ์ด๋? |
DTO๋ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ ๊ฐ์ฒด, DAO๋ DB ์ฒ๋ฆฌ ๋ก์ง ๋ด๋น |
DAO์ ์ฅ์ ์? |
์ฝ๋ ๋ถ๋ฆฌ, ์ฌ์ฌ์ฉ์ฑ โ, MVC ํจํด์ Model ๊ณ์ธต ๊ตฌ์ฑ |
select ๊ฒฐ๊ณผ๋ฅผ ์ด๋ป๊ฒ JSP์ ๋๊ธฐ๋์? |
DAO์์ List ๋ฐํ โ Servlet์์ request์ ์ ์ฅ โ JSP์์ ์ถ๋ ฅ |
โ
7. ๋ง๋ฌด๋ฆฌ ์์ฝ ๐ง
- ๐ก DAO = DB ์ ๊ทผ ๋ด๋น ํด๋์ค
- ๐ DAO๋ DTO์ ํจ๊ป ๋์ํ๋ฉฐ, SQL์ ์คํํจ
- โ insert, select, update, delete ๋ชจ๋ ์ด๊ณณ์ ๊ตฌํ
- โ
์ค์ ์์ DAO๋ Controller์ DB ์ฌ์ด์ ๋ค๋ฆฌ ์ญํ