- ํ๋ฃจ ์ ๋ฆฌ -
- ์ฟ ํค ๋ฐ ์ธ์ ๊ฐ๋ ์ ๋ฆฌ
- ์น์์์ JDBC ๋ฐ DBCP ์ ๋ฆฌ
- ์ค๋ ๊ณต๋ถ ๋ด์ฉ -
์๋ธ๋ฆฟ
์ฟ ํค (Cookie)
- ์ฟ ํค๋ฅผ ์ ๊ฑฐํ๋ ๋ฉ์๋๋ ๋ฐ๋ก ์กด์ฌํ์ง ์์
- ⇒ ํด๋ผ์ด์ธํธ์ ์ ์ฅ๋ ์ฟ ํค์ ์ ์ง์๊ฐ์ 0์ผ๋ก ๋ณ๊ฒฝํ์ฌ ๋ฎ์ด์์ฐ๋ฉด ์ฟ ํค ์ ๊ฑฐ
- ⇒ ์ ์ง์๊ฐ์ด ์ง๋ ์ฟ ํค๋ ํด๋ผ์ด์ธํธ์์ ์๋ ์๋ฉธ
- ๋จ์ :
- ⇒ ํด๋ผ์ด์ธํธ์๊ฒ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ๋ณด์์ฑ์ด ๋จ์ด์ง
- ⇒ ์ฟ ํค๋ ๋ฌธ์๊ฐ๋ง ์ ์ฅ ๊ฐ๋ฅ (๋ณตํฉ์ ์ธ ๊ฐ ์ ์ฅ ๋ถ๊ฐ)
์ธ์ (Session)
- ์ธ์ (Session) : ์๋ฒ(์นํ๋ก๊ทธ๋จ)์ ํด๋ผ์ด์ธํธ์์ ์ฐ๊ฒฐ ์ง์์ฑ์ ์ ๊ณตํ๊ธฐ ์ํด ์๋ฒ์ ์ ์ฅ๋๋ ๊ฐ - ์ธ์ ์์ด๋(์๋ณ์)๋ฅผ ์ด์ฉํ์ฌ ํด๋ผ์ด์ธํธ ๊ตฌ๋ถํ์ฌ ์ธ์ ๊ฐ(์ธ์คํด์ค) ์ ์ฅ
- ์ธ์ ๊ณผ ํด๋ผ์ด์ธํธ ์ฌ์ด์ ๋์๋
- ์ธ์ ์ ํด๋ผ์ด์ธํธ๋ง๋ค ์๋ฒ์ ๋ฐ๋ก๋ฐ๋ก ๋ง๋ค์ด์ง,
- ์ธ์ ๋ฐ์ธ๋ฉ (Session Binding) : ์ธ์ ์ ์นํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํ ์ ์๋๋ก ์ฐ๊ฒฐํ๋ ์์ - WAS
- ํด๋ผ์ด์ธํธ์์ [JSessionID] ์ด๋ฆ์ ์ฟ ํค๋ฅผ ์ ๊ณตํ์ง ์์ ๊ฒฝ์ฐ ์๋ก์ด ์ธ์ ์ ์์ฑํ์ฌ ๋ฐ์ธ๋ฉ ์ฒ๋ฆฌ ⇒ ์์ฑ๋ ์ธ์ ์ ์์ด๋(์๋ณ์)๋ฅผ [JSessionID] ์ด๋ฆ์ ์ฟ ํค๊ฐ์ผ๋ก ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌ
- ํด๋ผ์ด์ธํธ์์ [JSessionID] ์ด๋ฆ์ ์ฟ ํค๋ฅผ ์ ๊ณตํ ๊ฒฝ์ฐ ์ธ์ ํธ๋ํนํ์ฌ ๊ฒ์๋ ์ธ์ ์ ๋ฐ์ธ๋ฉ ⇒ ์ธ์ ํธ๋ํน ํ ๊ฒ์๋ ์ธ์ ์ด ์๋ ๊ฒฝ์ฐ ์ธ์ ์ ์์ฑํ์ฌ ๋ฐ์ธ๋ฉ ์ฒ๋ฆฌ
- ์ธ์ ํธ๋ํน(Session Tracking) : ํด๋ผ์ด์ธํธ์์ ์ ๊ณต๋ [JSessionID]์ ์ด๋ฆ์ ์ฟ ํค๊ฐ์ ์๋ฒ์ ์กด์ฌํ๋ ๋ชจ๋ ์ธ์ ์ ์์ด๋์ ๋น๊ตํ์ฌ ๊ฒ์ํ๋ ์์
- HttpServletRequest.getSession() : ๋ฐ์ธ๋ฉ๋ HttpSession ์ธ์คํด์ค๋ฅผ ๋ฐํํ๋ ๋ฉ์๋ ⇒ HttpSession ์ธ์คํด์ค๋ฅผ ์์ฑํ์ฌ ๋ฐ์ธ๋ฉ ํ๊ฑฐ๋ ๊ธฐ์กด HttpSession ์ธ์คํด์ค๋ฅผ ๋ฐ์ธ๋ฉํ์ฌ ๋ฐํ
- HttpSession : ์ธ์ ์ ์ ์ฅํ๊ธฐ ์ํ ์ธ์คํด์ค - WAS ํ๋ก๊ทธ๋จ์ ์ํด ๊ด๋ฆฌ
- ์ธ์ ์ด ์์ฑ๋์ด ๋ฐ์ธ๋ฉ๋ ๊ฒฝ์ฐ ์ธ์ ์ ์์ด๋๋ฅผ JSESSION ์ด๋ฆ์ ์ฟ ํค๋ก ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌ ⇒ JSESSION ์ด๋ฆ์ ์ฟ ํค๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ง์๊ฐ์ด -1๋ก ์ค์ ๋์ด ๋ธ๋ผ์ฐ์ ์ข ๋ฃ ์ ์ญ์
- HttpSession.isNew() : ์ธ์ ์ ํธ๋ํนํ์ฌ ๋ฐ์ธ๋ฉํ ๊ฒฝ์ฐ false๋ฅผ ๋ฐํํ๊ณ ์ธ์ ์ ์์ฑํ์ฌ ๋ฐํํ ๊ฒฝ์ฐ true๋ฅผ ๋ฐํํ๋ ๋ฉ์๋
- HttpSession.getId() : ๋ฐ์ธ๋ฉ๋ ์ธ์ ์ ์๋ณ์๋ฅผ ๋ฐํํ๋ ๋ฉ์๋
- HttpSession.getMaxInactiveInterval() : ๋ฐ์ธ๋ฉ ์ธ์ ์ ์ ์ง์๊ฐ(์ด)์ ๋ฐํํ๋ ๋ฉ์๋
- ⇒ ์ธ์ ์ ์ง์๊ฐ์ ๋ณ๊ฒฝํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ์ 1000์ด(30๋ถ)๋ก ์ค์
- HttpSession.setAttribute(String name, Object value) : ๋ฐ์ธ๋ฉ๋ ์ธ์ ์ ์ธ์ ๊ฐ์ ์ ์ฅ(๋ณ๊ฒฝ) ⇒ ์ธ์ ์ ์์ฑ๋ช (AttributeName - String)๊ณผ ์์ฑ๊ฐ(AttributeValue - Instance)์ ํ๋๋ก ๋ฌถ์ด ์ ์ฅ ⇒ ์ธ์ ์์ฑ๋ช ์ด ์ค๋ณต๋ ๊ฒฝ์ฐ ์ธ์ ๊ฐ ๋ณ๊ฒฝ ⇒ ์ธ์ ์ ๋ฐ์ธ๋ฉํ ๋ชจ๋ ์นํ๋ก๊ทธ๋จ์์ ์ธ์ ์์ฑ๋ช ์ผ๋ก ์์ฑ๊ฐ์ ๋ฐํ๋ฐ์ ์ฌ์ฉ -์ธ์คํด์ค ๊ณต์
- HttpSession.getAttribute(String name) : ๋ฐ์ธ๋ฉ๋ ์ธ์ ์ ์ ์ฅ๋ ์ธ์ ์์ฑ๊ฐ์ ๋ฐํํ๋ ๋ฉ์๋ ⇒ ์ธ์ ์์ฑ๊ฐ์ Object ํ์ ์ ์ธ์คํด์ค๋ก ๋ฐํ๋๋ฏ๋ก ๋ช ์์ ๊ฐ์ฒด ํ๋ณํ ์ฒ๋ฆฌํ์ฌ ์ฌ์ฉ ⇒ ์ธ์ ์์ฑ๋ช ์ผ๋ก ๋ํ ์ธ์ ์์ฑ๊ฐ์ด ์๋ ๊ฒฝ์ฐ null ๋ณํ
- HttpSession.removeAttribute(String name) : ๋ฐ์ธ๋ฉ๋ ์ธ์ ์ ์ ์ฅ๋ ์์ฑ๊ฐ(์ธ์คํด์ค) ์ ๊ฑฐ
- HttpSession.invalidate() : ๋ฐ์ธ๋ฉ๋ ์ธ์ ์ ์ธ๋ฐ์ธ๋ฉ(Unbinding)ํ๊ณ ์ ๊ฑฐํ๋ ๋ฉ์๋
- ์์ด๋ ๋น๋ฒ ์ ๋ ฅํด์ ์ธ์ฆ ์ฑ๊ณตํ์ ๋ ์ฑ๊ณตํ ์ฌ์ฉ์์๊ฒ ๊ถํ์ ๊ด๋ จ๋ ์ ๋ณด๋ฅผ ์ค์ผ ํ๋๋ฐ ๊ทธ๊ฑฐ๋ ์ธ์ ์ ์ ์ฅํ๋๊ฑฐ์
JDBC X WEB
- OracleDriver ํด๋์ค๋ฅผ ์ฝ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ - ํด๋์ค ๋ก๋ฉ(Loading) ์์ ⇒ OracleDriver ์ธ์คํด์ค๋ฅผ ์์ฑํ์ฌ DriverManager ํด๋์ค์ JDBC Driver ๋ฑ๋ก
- DriverManager ํด๋์ค์ ๋ฑ๋ก๋ JDBC Driver๋ฅผ ์ด์ฉํ์ฌ Oracle DBMS ์๋ฒ์ ์ ์ํ์ฌ Connection ์ธ์คํด์ค๋ฅผ ๋ฐํ๋ฐ์ ์ ์ฅ
- Connection ์ธ์คํด์ค๋ก๋ถํฐ SQL ๋ช ๋ น์ ์ ์ฅํ PreparedStatement ์ธ์คํด์ค๋ฅผ ์ ์ฅ
- PreparedStatement ์ธ์คํด์ค์ ์ ์ฅ๋ sql ๋ช ๋ น์ ์ ๋ฌํ๊ณ ์คํ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ๋ฐ์ ์ ์ฅ
- ๋ฐํ๋ฐ์ SQL ๋ช ๋ น์ ์คํ ๊ฒฐ๊ณผ๋ฅผ ์ด์ฉํ์ฌ ์ฒ๋ฆฌ ์์ ⇒ SQL ๋ช ๋ น์ ์คํ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ HTML ๋ฌธ์๋ก ์ ๋ฌ
- JDBC ๊ด๋ จ ์์ ์ ๊ฑฐ (null์ด ์๋ ์กฐ๊ฑด๋ฌธ ํฌํจ)
DBCP
- DBCP(Database Connection Pool) : Connection ์ธ์คํด์ค๋ฅผ ๋ฏธ๋ฆฌ ์์ฑํ์ฌ ์ ๊ณตํ๋ ๊ธฐ๋ฅ ⇒ JDBC ํ๋ก๊ทธ๋จ์ ์คํ ์๋๊ฐ ๋์์ง๊ณ ์ ์ง๋ณด์์ ํจ์จ์ฑ ์ฆ๊ฐ
- DBCP ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ํด๋์ค๋ ์ผ๋ฐ์ ์ผ๋ก javax.sql.DataSource ์ธํฐํ์ด์ค๋ฅผ ์์๋ฐ์ ์์ฑ
- BasicDataSource : DBCP ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ธ์คํด์ค
- DataSource.getConnetion() : DBCP ๊ธฐ๋ฅ์ ์ธ์คํด์ค๋ก๋ถํฐ connection ์ธ์คํด์ค๋ฅผ ๋ฐํํ๋ ๋ฉ์๋
JNDI
- JNDI (Java Naming Directory Interface) : ์ธ์คํด์ค ์์ฑ์ ํ์ํ ์ ๋ณด์ ์ด๋ฆ์ ๋ถ์ฌํ์ฌ WAS ํ๋ก๊ทธ๋จ์ ๋ฑ๋กํ๊ณ ํ์ํ ๊ฒฝ์ฐ ์ธ์คํด์ค๋ฅผ ์์ฑํ์ฌ ์ฌ์ฉํ๋ ๊ธฐ์ ⇒ ์ธ์คํด์ค์์ฑ์ ํ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ ํ์ผ ํ์ - /src/main/webapp/META-INF/ciontext.xml
- XML ํ์ผ ์์ฑ
- Resource : ์ธ์คํด์ค ์์ฑ์ ํ์ํ ์ ๋ณด๋ฅผ ์์ฑ๊ณผ ์์ฑ๊ฐ์ผ๋ก ์ ๊ณตํ๋ ์๋ฆฌ๋จผํธ
- name ์์ฑ : ์ธ์คํด์ค ์์ฑ์ ํ์ํ ์ ๋ณด์ ์ด๋ฆ(์๋ณ์)๋ฅผ ์์ฑ๊ฐ์ผ๋ก ์ค์
- auth ์์ฑ : ์ธ์คํด์ค๋ฅผ ๊ด๋ฆฌํ๋ ์ฌ์ฉ์๋ช ์ ์์ฑ๊ฐ์ผ๋ก ์ค์
- type ์์ฑ : ์์ฑ๋์ด ๋ฐํ๋๋ ์ธ์คํด์ค์ ์๋ฃํ(ํด๋์ค)์ ์์ฑ๊ฐ์ผ๋ก ์ค์
- factory ์์ฑ : ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ Factory ํด๋์ค๋ฅผ ์์ฑ๊ฐ์ผ๋ก ์ค์
- ๊ธฐํ ์์ฑ : ์ธ์คํด์ค์ ํ์ํ ์ ๋ณด๋ฅผ ์์ฑ(ํ๋๋ช )๊ณผ ์์ฑ๊ฐ(ํ๋๊ฐ)์ผ๋ก ์ค์
- InitialContext : WAS ํ๋ก๊ทธ๋จ์ ๋ฑ๋ก๋ ์์์ ์ ๋ณด๋ฅผ ์ด๋ฆ(์๋ณ์)์ผ๋ก ์ ๊ณต๋ฐ์ ์ธ์คํด์ค๋ฅผ ์์ฑํ์ฌ ๋ฐํํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ธ์คํด์ค
- InitialContext.lookup(String name) : WAS ํ๋ก๊ทธ๋จ์ ๋ฑ๋ก๋ ์์์ ์ ๋ณด๋ฅผ ์ด๋ฆ(์๋ณ์)์ผ๋ก ์ ๊ณต๋ฐ์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ ๋ฉ์๋ ⇒ Object ํ์ ์ผ๋ก ์ธ์คํด์ค๋ฅผ ๋ฐํํ๋ฏ๋ก ๋ช ์์ ๊ฐ์ฒด ํ๋ณํํ์ฌ ์ฌ์ฉ
- ⇒ NamingException ๋ฐ์ : ์์๋ช ์ผ๋ก ๋ฑ๋ก๋ ์์์ด ์๋ ๊ฒฝ์ฐ ๋ฐ์๋๋ ์์ธ
- ์ด๋ ๊ฒ ํ๋ฉด ์น ์์์ผ๋ก ๋ฑ๋กํ๊ฒ ๋์ด ์ ์ง๋ณด์๊ฐ ํธํ๋ค. ์ฝ๋์ ์ ๋๋๊ฑธ ์ต์ํ ์ํด. (helper)๋ ์์
- ์ค๋ณต๋ ์ฝ๋๊ฐ ๋ง์ผ๋ฉด ์์ฐ์ฑ์ด ๋จ์ด์ง๊ณ ์ ์ง๋ณด์๊ฐ ์ด๋ ต๋ค.
DTO (Data Transfer Object)
- ํ ์ด๋ธ์ ํ์ ๋ณด๋ฅผ ์ ์ฅํ์ฌ ์ ๋ฌํ๊ธฐ ์ํ ํด๋์ค
DAO (Data Access Object)
- ํ ์ด๋ธ์ ํ์ ๋ํ ์ฝ์ , ๋ณ๊ฒฝ, ์ญ์ , ๊ฒ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ํด๋์ค ⇒ ์ฑ๊ธํค ํด๋์ค๋ก ์์ฑํ๋ ๊ฒ์ ๊ถ์ฅ
- JDBC ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํ DAO ํด๋์ค๊ฐ ์์ ๋ฐ๊ธฐ ์ํ ํด๋์ค๋ฅผ ์ถ๊ฐ๋ก ์์ฑํจ
- ⇒ DataSource ์ธ์คํด์ค(DBCP) - WAS ํ๋ก๊ทธ๋จ์ ๋ฑ๋ก๋ ์์ ์ฌ์ฉ(JNDI)
- ⇒ DataSource ์ธ์คํด์ค๋ก๋ถํฐ Connection ์ธ์คํด์ค๋ฅผ ์ ๊ณต๋ฐ์ ๋ฐํํ๋ ๋ฉ์๋์ JDBC ๊ด๋ จ ์์์ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ๋ฐ์ ์ ๊ฑฐํ๋ ๋ฉ์๋๋ฅผ ์์ฑํ๋ ๋ฉ์๋ ์์ฑ - ์ค๋ณต๋ ์ฝ๋ ์ต์ํ
- ⇒ ์ธ์คํด์ค ์์ฑ์ด ๋ชฉ์ ์ด ์๋ ์์์ ๋ชฉ์ ์ผ๋ก ์ ์ธ๋ ํด๋์ค์ด๋ฏ๋ก ์ถ์ ํด๋์ค๋ก ์ ์ธํ๋ ๊ฒ์ ๊ถ์ฅํจ
- ์ธ๋ฏธ ํํ -
> ํ ํ๋ฆฟ ์บก์ณ๋ณธ ์ด์ฉํ์ฌ ํ๋ฉด ์ ์์ ์์ฑ
- ์คํฐ๋ ๋ด์ฉ ๋ฐ ๊ฒฐ๊ณผ -
> ์น์์์ JDBC, (old)(new) ๋ฐฉ์์ ์ฐจ์ด (DBCP) ์ฐจ์ด ํ์ธ
๋ฐ์ํ
'Legacy' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
2022. 1 . 11 ์ ๊ธฐ๋ก (0) | 2022.01.11 |
---|---|
2022.1.10์ ๊ธฐ๋ก (0) | 2022.01.11 |
2022.1.6์ ๊ธฐ๋ก (0) | 2022.01.07 |
2021.1.5 (0) | 2022.01.05 |
2021.1.4์ ๊ธฐ๋ก (0) | 2022.01.04 |