๐ ๊ฐ์ฒด์งํฅ์ ์ธ๊ณ์์๋ ๋ชจ๋ ๊ฒ์ด ๋ณํ๋๋ฐ, ์ฝ๊ฒ ๋งํ๋ฉด ๊ฐ์ฒด์ ๋ํ ์ค๊ณ์ ์ด๋ฅผ ๊ตฌํํ ์ฝ๋๊ฐ ๋ณํ๋ค๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์๋ ๊ฐ์ฒด๋ฅผ ์ค๊ณํ ๋ ๋ฐ๋ก ๋ฏธ๋์ ๋ณํ๋ฅผ ์ด๋ป๊ฒ ๋๋นํ ๊ฒ์ธ๊ฐ ์ผ๋ํด ๋ฌ์ผ ํฉ๋๋ค.
๊ฐ์ฒด์งํฅ ๊ธฐ์ (์ธ์ด)๋ ์ด๋ฌํ ๊ฐ์ฒด์งํฅ ์ธ๊ณ์ ๋ณํ์ ํจ๊ณผ์ ์ผ๋ก ๋์ฒํ ์ ์์ต๋๋ค.
How?
๋ณํ์ ํญ์ ๋ถ๋ฆฌ๋ฅผ ํตํด ์ต์ํ์ผ๋ก ์ค์ฌ์ค์ผ ํฉ๋๋ค.
๐ง ๋ถ๋ฆฌ๋?
ํ๋ก๊ทธ๋๋ฐ์ ๊ธฐ์ด ๊ฐ๋ ์ค ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ๋ผ๋ ๊ฒ ์๋๋ฐ,
์ด๋ฅผ ๊ฐ์ฒด์งํฅ์ ์ ์ฉํด๋ณด๋ฉด, ๊ด์ฌ์ด ๊ฐ์ ๊ฒ๋ผ๋ฆฌ๋ ํ๋์ ๊ฐ์ฒด ์์ผ๋ก ๋๋ ์นํ ๊ฐ์ฒด๋ก ๋ชจ์ด๊ฒ ํ ์ ์๊ณ ,
๊ด์ฌ์ด ๋ค๋ฅธ ๊ฒ์ ๊ฐ๋ฅํ ํ ๋ฐ๋ก ๋จ์ด์ ธ์ ์๋ก ์ํฅ์ ์ฃผ์ง ์๋๋ก ๋ถ๋ฆฌํ๋ ๊ฒ์ ๋๋ค.
๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ๋ฅผ ์ ์ฉํด๋ณด๋ฉด,
DB connection ๋ถ๋ถ์ ๋ค๋ฅธ ๊ฒ๊ณผ ์ํฅ์ ์ฃผ์ง ์๋๋ก ๋ ๋ฆฝ์ ์ผ๋ก ๋ถ๋ฆฌ ํ ์ ์์ต๋๋ค.
๋ถ๋ฆฌํ๊ณ ๋ UserDao Class
public class UserDao_distributed {
public void add(User user) throws ClassNotFoundException, SQLException{
Connection c = getConnection();
//...์ฝ๋ ์๋ต
}
public User get(String id) throws ClassNotFoundException, SQLException {
Connection c = getConnection();
//...์ฝ๋ ์๋ต
}
private Connection getConnection() throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");
Connection c = getConnection("jdbc:mysql://localahost/springDao","spring", "753951");
return c;
}
}
์์ ๊ฐ์ด DB Connection ์์ฑ ๋ฐฉ์์ ๋ ๋ฆฝ์ ์ผ๋ก ๋ง๋ค์ด์ฃผ์์ง๋ง,
์ฌ๋ฌ ๊ณ ๊ฐ๋ค์ด ๋ค๋ฅธ ์ข ๋ฅ์ DB๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ ๋, ๊ณ ๊ฐ๋ค์๊ฒ ์์ค๋ฅผ ์ ๊ณตํ์ง ์๊ณ ๋ค๋ฅธ ์ข ๋ฅ์ DB๋ฅผ ์ ๊ณตํด์ค์ผํฉ๋๋ค.
์๋ํ๋ฉด ๊ฐ๋ฐ์๋ค์ ๊ณ ๊ฐ์๊ฒ ์์ค๋ฅผ ์ง์ ๊ณต๊ฐํ๊ณ ์ถ์ง ์์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
์์
์ถ์ ๋ฉ์๋๋ฅผ ํตํด UserDao ์ฝ๋๋ฅผ ํ ๋จ๊ณ ๋ ๋ถ๋ฆฌ ํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด Naver์ Kakao๊ฐ Dao ๊ฐ์ฒด๋ฅผ ์ฌ๊ณ ์ถ์ดํ ๋, DB ์์ฑ ๋ฐฉ์์ ์์ ๋ค์ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๊ณ ์ถ์ดํ๊ธฐ ๋๋ฌธ์,
์ถ์ ํด๋์ค๋ก ๋ง๋ค์ด์ง UserDao๋ฅผ ์์ํด NUserDao์ KUserDao ์๋ธํด๋์ค๋ฅผ ๋ง๋ค์ด ๊ตฌํ์ํฌ ์ ์์ต๋๋ค.
์ถ์ํํ UserDao Class
public abstract class UserDao_abstracted {
public void add(User user) throws ClassNotFoundException, SQLException {
Connection c = getConnection();
//...์ฝ๋ ์๋ต
}
public User get(String id) throws ClassNotFoundException, SQLException {
Connection c = getConnection();
//...์ฝ๋ ์๋ต
}
public abstract Connection getConnection() throws ClassNotFoundException, SQLException;
}
public class NUserDao extends UserDao {
public Connection getConnection() throws ClassNotFoundException, SQLException {
// Naver DB connection Code
}
}
public class KUserDao extends UserDao {
public Connection getConnection() throws ClassNotFoundException, SQLException {
// Kakao DB connection Code
}
}
๐ ํ ํ๋ฆฟ ๋ฉ์๋ ํจํด - ์คํ๋ง์ด ์ฌ๋ํ๋..
์์ ๊ฐ์ด ์ํผํด๋์ค์ ๊ธฐ๋ณธ์ ์ธ ๋ก์ง์ ํ๋ฆ์ ๋ง๋ค๊ณ ,
๊ทธ ๊ธฐ๋ฅ์ ์ผ๋ถ๋ฅผ ์ถ์ ๋ฉ์๋๋ก ๋ง๋ ๋ค ์๋ธํด๋์ค์์ ์ด๋ฐ ๋ฉ์๋๋ฅผ ํ์์ ๋ง๊ฒ ๊ตฌํํด์
์ฌ์ฉํ๋๋ก ๋ง๋๋ ๋ฐฉ๋ฒ์ ํ ํ๋ฆฟ ๋ฉ์๋ ํจํด์ด๋ผ๊ณ ํฉ๋๋ค.
๐งพ ์ ๋ฆฌ
๋ถ๋ฆฌ๋ฅผ ํตํด ๊ทธ๋ด๋ฏํ Dao ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ฃผ์์ต๋๋ค.
ํ์ง๋ง, ์์ฝ๊ฒ๋ ๋ฌธ์ ์ ์ ๋จ์์์ต๋๋ค.
์์์ ๋ค์ค ์์์ ํ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๋ชฉ์ ์ผ๋ก UserDao์ ์์์ ์ ์ฉํ๊ธฐ ํ๋ญ๋๋ค.
ํ์ฅ๋ ๊ธฐ๋ฅ์ธ DB Connection์ ์์ฑํ๋ ์ฝ๋๋ฅผ ๋ค๋ฅธ Dao ํด๋์ค์์ ์ ์ฉ ํ ์ ์์ต๋๋ค.
์ด๋ฅผ ์ํด DAO์ ํ์ฅ์ ์ ์ฉํด์ผํฉ๋๋ค.
์ฐธ๊ณ ๋ฌธ์ :
ํ ๋น์ ์คํ๋ง3 (์ด์ผ๋ฏผ)
'Back-end > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] ์ค๋ธ์ ํธ ํฉํ ๋ฆฌ (0) | 2020.07.29 |
---|---|
[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 |