ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ค
๊ณผ์ฐ DaoFactory์ userDao()๋ฅผ ์ฌ๋ฌ ๋ฒ ํธ์ถํ์ ๋ ๋์ผํ ์ค๋ธ์ ํธ๊ฐ ๋์์ฌ๊น?
“๋์ผํ”์ ๋ํ ๋ด์ฉ์ ๋ค์ ํฌ์คํ ์ ์ฐธ๊ณ ํ์.
๋ค์ ์ฝ๋๋ฅผ ์ดํด๋ณด์.
DaoFactory factory = new DaoFactory();
UserDao dao1 = factory.userDao();
UserDao dao2 = factory.userDao();
System.out.println(dao1);
System.out.println(dao2);
dao1๊ณผ dao2์ ์ถ๋ ฅ๊ฐ์ด ๊ฐ๋ค๋ฉด ๋์ผํ ์ค๋ธ์ ํธ๋ค.
ํ์ง๋ง, ์ถ๋ ฅ๋๋ ๊ฐ์ ๋งค๋ฒ ๋ค๋ฅด๋ค.
๋ ๊ฐ๋ ๊ฐ๊ธฐ ๋ค๋ฅธ ๊ฐ์ ๊ฐ์ง ๋์ผํ์ง ์์ ์ค๋ธ์ ํธ๋ค.
์ฆ, ์ค๋ธ์ ํธ๊ฐ ๋ ๊ฐ๊ฐ ์๊ฒผ๋ค๋ ์๋ฏธ๋ค.
๋ค์ ์ฝ๋๋ฅผ ์ดํด๋ณด์.
ApplicationContext context = new
AnnotationConfigApplicationContext(DaoFactory.class);
UserDao dao3 = context.getBean("userDao", UserDao.class);
UserDao dao4 = context.getBean("userDao", UserDao.class);
System.out.println(dao3);
System.out.println(dao4);
์ ์ฝ๋๋ ์คํ๋ง์ ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์คํธ์ DaoFactory๋ฅผ ์ค์ ์ ๋ณด๋ก ๋ฑ๋กํ ๋ค, getBean()์ ์ด์ฉํด userDao๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ฑ๋ก๋ ์ค๋ธ์ ํธ๋ฅผ ๊ฐ์ ธ์จ ์ฝ๋๋ค.
๋ค์ ์ฝ๋๋ฅผ ์คํํด๋ณด๋ฉด ๋ ์ถ๋ ฅ๊ฐ์ด ๊ฐ์๊ฑธ ์ ์ ์๋ค.
๐ค
๋๋์ฒด ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ฑธ๊น?
๋ ์ฝ๋์ ์ฐจ์ด์ ์ ์ค๋ธ์ ํธ ํฉํ ๋ฆฌ์ ์คํ๋ง์ ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์คํธ์ ๋์๋ฐฉ์์ ์ฐจ์ด์ ์ด ์๋ค.
์คํ๋ง์ ์ฌ๋ฌ ๋ฒ์ ๊ฑธ์ณ ๋น์ ์์ฒญํ๋๋ผ๋ ๋งค๋ฒ ๋์ผํ ์ค๋ธ์ ํธ๋ฅผ ๋๋ ค์ค๋ค.
๋จ์ํ๊ฒ getBean()์ ์คํํ ๋๋ง๋ค userDao() ๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ , ๋งค๋ฒ new์ ์ํด ์๋ก์ด UserDao๊ฐ ๋ง๋ค์ด์ง์ง ์๋๋ค๋ ๋ป์ด๋ค.
์ฑ๊ธํค ๋ ์ง์คํธ๋ฆฌ๋ก์์ ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์คํธ
์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์คํธ๋ IoC ์ปจํ ์ด๋์ธ ๋์์ ์ฑ๊ธํค์ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ์ฑ๊ธํค ๋ ์ง์คํธ๋ฆฌ์ด๊ธฐ๋ ํ๋ค.
์คํ๋ง์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ณ๋ค๋ฅธ ์ค์ ์ ํ์ง ์์ผ๋ฉด ๋ด๋ถ์์ ์์ฑํ๋ ๋น ์ค๋ธ์ ํธ๋ฅผ ๋ชจ๋ ์ฑ๊ธํค์ผ๋ก ๋ง๋ ๋ค.
์ฌ๊ธฐ์ ์ฑ๊ธํค์ด๋ผ๋ ๊ฒ์ ์ฑ๊ธํค ํจํด๊ณผ ๊ฐ๋ ์ ๋น์ทํ๋ ๊ตฌํ ๋ฐฉ๋ฒ์ ์์ ํ ๋ค๋ฅด๋ค.
์ฑ๊ธํค ํจํด์ ๋ํ ์์ธํ ์ ๋ณด๋ ๋ค์ ํฌ์คํ ์ ์ฐธ๊ณ ํ์.
์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ฑ๊ธํค
๐ค
์ ์คํ๋ง์ ์ฑ๊ธํค์ผ๋ก ๋น์ ๋ง๋๋ ๊ฑธ๊น?
์ด๋ ์คํ๋ง์ด ์ฃผ๋ก ์ ์ฉ๋๋ ๋์์ด ์๋ฐ ์ํฐํ๋ผ์ด์ฆ ๊ธฐ์ ์ ์ฌ์ฉํ๋ ์๋ฒํ๊ฒฝ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
์คํ๋ง์ด ์ฒ์ ์ค๊ณ๋๋ ๋๊ท๋ชจ์ ์ํฐํ๋ผ์ด์ฆ ์๋ฒํ๊ฒฝ์ ์๋ฒ ํ๋๋น ์ต๋๋ก ์ด๋น ์์ญ์์ ์๋ฐฑ ๋ฒ์ฉ ๋ธ๋ผ์ฐ์ ๋ ์ฌํ ์์คํ ์ผ๋ก๋ถํฐ์ ์์ฒญ์ ๋ฐ์ ์ฒ๋ฆฌํ ์ ์๋ ๋์ ์ฑ๋ฅ์ด ์๊ตฌ๋๋ ํ๊ฒฝ์ด์๋ค.
๊ทธ๋ฐ๋ฐ ๋งค๋ฒ ํด๋ผ์ด์ธํธ์ ์์ฒญ๋ง๋ค ๊ฐ ๋ก์ง์ ๋ด๋นํ๋ ์ค๋ธ์ ํธ๋ฅผ ์๋ก ๋ง๋ค์ด์ ์ฌ์ฉํ๋ค๊ณ ์๊ฐํด๋ณด์.
์๋ฌด๋ฆฌ ์๋ฐ์ ์ค๋ธ์ ํธ ์์ฑ๊ณผ GC์ ์ฑ๋ฅ์ด ์ข์์ก๋ค๊ณ ํ๋ค ๋ถํ๊ฐ ๊ฑธ๋ฆฌ๋ฉด ์๋ฒ๊ฐ ๊ฐ๋นํ๊ธฐ ํ๋ค๋ค.
๊ทธ๋์ ์ํฐํ๋ผ์ด์ฆ ๋ถ์ผ์์๋ ์๋น์ค ์ค๋ธ์ ํธ๋ผ๋ ๊ฐ๋ ์ ์ผ์ฐ๋ถํฐ ์์ํด์๋ค.
์๋ธ๋ฆฟ์ ์๋ฐ ์ํฐํ๋ผ์ด์ฆ ๊ธฐ์ ์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ด ๋๋ ์๋น์ค ์ค๋ธ์ ํธ๋ผ๊ณ ํ ์ ์๋ค.
์คํ์์ ๊ฐ์ ํ์ง ์์ง๋ง, ์๋ธ๋ฆฟ์ ๋๋ถ๋ถ ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์ ์ฑ๊ธํค์ผ๋ก ๋์ํ๋ค.
์๋ธ๋ฆฟ ํด๋์ค๋น ํ๋์ ์ค๋ธ์ ํธ๋ง ๋ง๋ค์ด๋๊ณ , ์ฌ์ฉ์์ ์์ฒญ์ ๋ด๋นํ๋ ์ฌ๋ฌ ์ค๋ ๋์์ ํ๋์ ์ค๋ธ์ ํธ๋ฅผ ๊ณต์ ํด ๋์์ ์ฌ์ฉํ๋ค.
์ด๋ ๊ฒ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ ํ๋ ์, ๋๊ฐ ํ ๊ฐ์ ์ค๋ธ์ ํธ๋ง ๋ง๋ค์ด์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ฑ๊ธํค ํจํด์ ์๋ฆฌ๋ค.
ํ์ง๋ง ๋์์ธ ํจํด์ ์๊ฐ๋ ์ฑ๊ธํค ํจํด์ ์ฌ์ฉํ๊ธฐ๊ฐ ๊น๋ค๋กญ๊ณ ์ฌ๋ฌ ๊ฐ์ง ๋ฌธ์ ์ ์ด ์์ด์ ์ํฐํจํด์ด๋ผ๊ณ ๋ถ๋ฅด๋ ์ฌ๋๋ ์๋ค.
์ฑ๊ธํค ํจํด์ ํ๊ณ
๋ค์ ์ฝ๋๋ ์ฑ๊ธํค ํจํด์ ์ ์ฉํ ์ฝ๋์ด๋ค.
public class UserDao {
private static UserDao INSTANCE;
// ...
private UserDao(ConnectionMaker connectionMaker) {
this.connectionMaker = connectionMaker;
}
public static synchronized UserDao getInstance() {
if (INSTANCE == null) {
INSTANCE = new UserDao(???);
}
return INSTANCE;
}
// ...
}
์ผ๋ฐ์ ์ผ๋ก ์ฑ๊ธํค ํจํด ๊ตฌํ ๋ฐฉ์์๋ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๊ฐ ์๋ค.
์ฑ๊ธํค ๋ฌธ์ ์ [1]. private ์์ฑ์๋ฅผ ๊ฐ๊ณ ์๊ธฐ ๋๋ฌธ์ ์์ํ ์ ์๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด์งํฅ์ ์ฅ์ ์ธ ์์๊ณผ ์ด๋ฅผ ์ด์ฉํ ๋คํ์ฑ์ ์ ์ฉํ ์ ์๋ค.
๊ธฐ์ ์ ์ธ ์๋น์ค๋ง ์ ๊ณตํ๋ ๊ฒฝ์ฐ๋ผ๋ฉด ์๊ด์๊ฒ ์ง๋ง, ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ก์ง์ ๋ด๊ณ ์๋ ์ผ๋ฐ ์ค๋ธ์ ํธ์ ๊ฒฝ์ฐ ์ฑ๊ธํค์ผ๋ก ๋ง๋ค์์ ๋ ๊ฐ์ฒด์งํฅ์ ์ธ ์ค๊ณ์ ์ฅ์ ์ ์ ์ฉํ๊ธฐ๊ฐ ์ด๋ ต๋ค๋ ๊ฑด ์ฌ๊ฐํ ๋ฌธ์ ๋ค.
๋ํ ์์๊ณผ ๋คํ์ฑ ๊ฐ์ ๊ฐ์ฒด์งํฅ์ ํน์ง์ด ์ ์ฉ๋์ง ์๋ ์คํํฑ ํ๋์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ์ญ์ ๋์ผํ ๋ฌธ์ ๋ฅผ ๋ฐ์์ํจ๋ค.
์ฑ๊ธํค ๋ฌธ์ ์ [2]. ์ฑ๊ธํค์ ํ ์คํธํ๊ธฐ๊ฐ ํ๋ค๋ค.
์ฑ๊ธํค์ ๋ง๋ค์ด์ง๋ ๋ฐฉ์์ด ์ ํ์ ์ด๊ธฐ ๋๋ฌธ์ ํ ์คํธ์์ ์ฌ์ฉ๋ ๋ mock ์ค๋ธ์ ํธ ๋ฑ์ผ๋ก ๋์ฒดํ๊ธฐ๊ฐ ํ๋ค๋ค.
ํ ์คํธ๋ ์ํฐํ๋ผ์ด์ฆ ๊ฐ๋ฐ์ ํต์ฌ์ธ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ ์ฑ๊ธํค์ผ๋ก ๋ง๋ค๋ฉด ํ ์คํธ๋ฅผ ๋ง๋๋ ๋ฐ ์ง์ฅ์ด ์๋ค๋ ๊ฑด ํฐ ๋จ์ ์ด๋ค.
์ฑ๊ธํค ๋ฌธ์ ์ [3]. ์๋ฒํ๊ฒฝ์์๋ ์ฑ๊ธํค์ด ํ๋๋ง ๋ง๋ค์ด์ง๋ ๊ฒ์ ๋ณด์ฅํ์ง ๋ชปํ๋ค.
์๋ฒ์์ ํด๋์ค ๋ก๋๋ฅผ ์ด๋ป๊ฒ ๊ตฌ์ฑํ๊ณ ์๋๋์ ๋ฐ๋ผ์ ์ฑ๊ธํค ํด๋์ค์์๋ ํ๋ ์ด์์ ์ค๋ธ์ ํธ๊ฐ ๋ง๋ค์ด์ง ์ ์๋ค.
๋ฐ๋ผ์ ์๋ฐ ์ธ์ด๋ฅผ ์ด์ฉํ ์ฑ๊ธํค ํจํด ๊ธฐ๋ฒ์ ์๋ฒํ๊ฒฝ์์๋ ์ฑ๊ธํค์ด ๊ผญ ๋ณด์ฅ๋๋ค๊ณ ๋ณผ ์ ์๋ค.
์ฑ๊ธํค ๋ฌธ์ ์ [4]. ์ฑ๊ธํค์ ์ฌ์ฉ์ ์ ์ญ ์ํ๋ฅผ ๋ง๋ค ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ๋์งํ์ง ๋ชปํ๋ค.
์ฑ๊ธํค์ ์ฌ์ฉํ๋ ํด๋ผ์ด์ธํธ๊ฐ ์ ํด์ ธ ์์ง ์๋ค.
์ฑ๊ธํค์ ์คํํฑ ๋ฉ์๋๋ฅผ ์ด์ฉํด ์ธ์ ๋ ์ง ์ฑ๊ธํค์ ์ฝ๊ฒ ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋์๋ ์ง ์ฌ์ฉ๋ ์ ์๊ณ , ๊ทธ๋ฌ๋ค ๋ณด๋ฉด ์์ฐ์ค๋ฝ๊ฒ ์ ์ญ ์ํ๋ก ์ฌ์ฉ๋๊ธฐ ์ฝ๋ค.
์ ์ญ ์ํ๋ฅผ ๊ฐ๋ ๊ฒ์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ๊ถ์ฅ๋์ง ์๋ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ด๋ค.
๊ทธ๋ผ์๋ ์ฑ๊ธํค์ ์ฌ์ฉํ๋ฉด ๊ทธ๋ฐ ์ ํน์ ๋น ์ง๊ธฐ ์ฝ๋ค.
๊ทธ๋ด ๋ฐ์๋ ์์ ์คํํฑ ํ๋์ ๋ฉ์๋๋ก๋ง ๊ตฌ์ฑ๋ ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ํธ์ด ๋ซ๋ค.
์ฑ๊ธํค ๋ ์ง์คํธ๋ฆฌ
๐ค
๊ทธ๋ผ ์ฑ๊ธํค์ ์ฐ๋ผ๋๊ฑธ๊น ๋ง๋ผ๋๊ฑธ๊น?
์ผ๋จ, ์คํ๋ง์ ์๋ฒํ๊ฒฝ์์ ์ฑ๊ธํค์ด ๋ง๋ค์ด์ ธ์ ์๋น์ค ์ค๋ธ์ ํธ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ๋๋ ๊ฒ์ ์ ๊ทน ์ง์งํ๋ค.
ํ์ง๋ง ์๋ฐ์์์ ์ฑ๊ธํค ํจํด์ ์ฌ๋ฌ ๋ฌธ์ ์ ์ ๊ฐ์ง๊ณ ์๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์คํ๋ง์ ์ง์ ์ฑ๊ธํค ํํ์ ์ค๋ธ์ ํธ๋ฅผ ๋ง๋ค๊ณ ๊ด๋ฆฌํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
๊ทธ๊ฒ์ด ๋ฐ๋ก ์ฑ๊ธํค ๋ ์ง์คํธ๋ฆฌ(singleton registry)๋ค.
์ฑ๊ธํค ๋ ์ง์คํธ๋ฆฌ์ ์ฅ์ ์ ์คํํฑ ๋ฉ์๋์ private ์์ฑ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๋น์ ์์ ์ธ ํด๋์ค๊ฐ ์๋ ํ๋ฒํ ์๋ฐ ํด๋์ค๋ฅผ ์ฑ๊ธํค์ผ๋ก ํ์ฉํ๊ฒ ํด์ค๋ค.
์ค๋ธ์ ํธ ์์ฑ์ ๊ดํ ๋ชจ๋ ๊ถํ์ IoC ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์คํธ์๊ฒ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํ๋ค.
์คํ๋ง์ IoC ์ปจํ ์ด๋์ผ ๋ฟ๋ง ์๋๋ผ, ๊ณ ์ ์ ์ธ ์ฑ๊ธํค ํจํด์ ๋์ ํด์ ์ฑ๊ธํค์ ๋ง๋ค๊ณ ๊ด๋ฆฌํด์ฃผ๋ ์ฑ๊ธํค ๋ ์ง์คํธ๋ฆฌ๋ผ๋ ์ ์ ๊ธฐ์ตํด๋์.
๋ค์์ ์ฑ๊ธํค์ผ๋ก ๋ง๋ค์ด์ง๊ธฐ ๋๋ฌธ์ ์ฃผ์ํด์ผ ํ ์ ์ ๋ํด ์์๋ณด์.
์ฑ๊ธํค๊ณผ ์ค๋ธ์ ํธ์ ์ํ
์ฑ๊ธํค์ ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์ด๋ผ๋ฉด ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์์ ์ ๊ทผํด์ ์ฌ์ฉํ ์ ์๋ค.
๋ฐ๋ผ์ ์ํ ๊ด๋ฆฌ์ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ฌ์ผ ํ๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์ฑ๊ธํค์ด ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์ ์๋น์ค ํํ์ ์ค๋ธ์ ํธ๋ก ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ์๋ ์ํ์ ๋ณด๋ฅผ ๋ด๋ถ์ ๊ฐ๊ณ ์์ง ์์ ๋ฌด์ํ ๋ฐฉ์์ผ๋ก ๋ง๋ค์ด์ ธ์ผ ํ๋ค.
์ด๋ฅผ ์งํค์ง ์์ผ๋ฉด ๊ฐ๋ฐ์ ํผ์์ ํ ์คํธํ ๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์ง๋ง, ์๋ฒ์ ๋ฐฐํฌ๋๊ณ ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์์ ์ ์ํ๋ฉด ๋ฐ์ดํฐ๊ฐ ์๋ง์ด ๋์ด๋ฒ๋ฆฌ๋ ๋ฑ์ ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
๋ฌผ๋ก ์ฝ๊ธฐ์ ์ฉ์ ๊ฐ์ด๋ผ๋ฉด ์ด๊ธฐํ ์์ ์์ ์ธ์คํด์ค ๋ณ์์ ์ ์ฅํด๋๊ณ ๊ณต์ ํ๋ ๊ฒ์ ์๋ฌด ๋ฌธ์ ๊ฐ ์๋ค.
๐ค
๊ทธ๋ผ ์ํ๊ฐ ์๋ ๋ฐฉ์์ผ๋ก ํด๋์ค๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ์
๊ฐ ์์ฒญ์ ๋ํ ์ ๋ณด๋, DB, ์๋ฒ์ ๋ฆฌ์์ค๋ก๋ถํฐ ์์ฑํ ์ ๋ณด๋ ์ด๋ป๊ฒ ๋ค๋ค์ผ ํ ๊น?
์ด๋๋ ํ๋ผ๋ฏธํฐ์ ๋ก์ปฌ ๋ณ์, ๋ฆฌํด ๊ฐ ๋ฑ์ ์ด์ฉํ๋ฉด ๋๋ค.
์์ ๊ฐ๋ค์ ๋งค๋ฒ ์๋ก์ด ๊ฐ์ ์ ์ฅํ ๋ ๋ฆฝ์ ์ธ ๊ณต๊ฐ์ด ๋ง๋ค์ด์ง๊ธฐ ๋๋ฌธ์ ์ฑ๊ธํค์ด๋ผ๊ณ ํด๋ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋ณ์์ ๊ฐ์ ๋ฎ์ด์ธ ์ผ์ ์๋ค.
๋ค์ ์ฝ๋๋ฅผ ์ดํด๋ณด์.
public class UserDao {
// ์ด๊ธฐ์ ์ค์ ํ๋ฉด ์ฌ์ฉ ์ค์๋ ๋ฐ๋์ง ์๋ ์ฝ๊ธฐ์ ์ฉ ์ธ์คํด์ค ๋ณ์
private ConnectionMaker connectionMaker;
// ๋งค๋ฒ ์๋ก์ด ๊ฐ์ผ๋ก ๋ฐ๋๋ ์ ๋ณด๋ฅผ ๋ด์ ์ธ์คํด์ค ๋ณ์. (์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ๋ฐ์)
private Connection c;
private User user;
private UserDao(ConnectionMaker connectionMaker) {
this.connectionMaker = connectionMaker;
}
public User get(String id) throws ClassNotFoundException, SQLException {
this.c = connectionMaker.makeConnection();
this.user = new User();
this.user.setId(rs.getString("id"));
this.user.setName(rs.getString("name"));
return this.user;
}
}
๊ธฐ์กด UserDao์ ๋ค๋ฅธ ์ ์ ๊ธฐ์กด์ ๋ก์ปฌ ๋ณ์๋ก ์ ์ธํ๊ณ ์ฌ์ฉํ๋ Connection๊ณผ User๋ฅผ ํด๋์ค์ ์ธ์คํด์ค ํ๋๋ก ์ ์ธํ๋ค๋ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ ์ฑ๊ธํค์ผ๋ก ๋ง๋ค์ด์ ธ์ ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์ ์ฌ์ฉํ๋ฉด ์์์ ์ค๋ช ํ ๋๋ก ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
๋ฐ๋ผ์ ์คํ๋ง์ ์ฑ๊ธํค ๋น์ผ๋ก ์ฌ์ฉ๋๋ ํด๋์ค๋ฅผ ๋ง๋ค ๋์๋ ๊ธฐ์กด์ UserDao์ฒ๋ผ ๊ฐ๋ณ์ ์ผ๋ก ๋ฐ๋๋ ์ ๋ณด๋ ๋ก์ปฌ ๋ณ์๋ก ์ ์ํ๊ฑฐ๋, ํ๋ผ๋ฏธํฐ๋ก ์ฃผ๊ณ ๋ฐ์ผ๋ฉด์ ์ฌ์ฉํ๊ฒ ํด์ผ ํ๋ค.
ConnectionMaker๋ ์ฝ๊ธฐ์ ์ฉ์ ์ ๋ณด์ด๊ธฐ ๋๋ฌธ์ ๊ทธ๋๋ก ์์ด๋ ์๊ด์๋ค.
'Sping Framework' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋กํ ํ์ ๊ณผ ์ค์ฝํ [2]. ํ๋กํ ํ์ ๋น์ DL ์ ๋ต (0) | 2022.07.13 |
---|---|
ํ๋กํ ํ์ ๊ณผ ์ค์ฝํ [1]. ํ๋กํ ํ์ ๋น์ ์ฉ๋ (0) | 2022.07.12 |
์คํ๋ง์ IoC (0) | 2022.07.10 |
์๋ฐ๋น(JavaBean) (0) | 2022.07.10 |
stereotype annotation๋ค์ ์ด๋ป๊ฒ ์ฐพ์์ bean์ผ๋ก ๋ฑ๋กํ ๊น? (0) | 2022.06.21 |
- Total
- Today
- Yesterday
- Spring Boot
- ํด๋ฆฐ ์ฝ๋
- ๊ฐ์ฒด์งํฅ
- ๋์์ธํจํด
- MSA
- ์๊ณ ๋ฆฌ์ฆ
- Kotlin
- ๋์์ธ ํจํด
- Olympiad
- ํด๋ฆฐ ์ํคํ ์ฒ
- programmers
- BAEKJOON
- Algorithm
- kkoon9
- ํ ๋ผํผ
- ๋ฐฑ์ค
- ์ ๊ทํํ์
- ์ดํฉํฐ๋ธ ์๋ฐ
- BOJ
- ์ดํํฐ๋ธ ์๋ฐ
- JPA
- Effective Java
- Spring
- Java
- kotest
- C++
- ์ฝํ
- AWS
- node.js
- ํ๋ก๊ทธ๋๋จธ์ค
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |