1) ๋น๊ด์ ๋ฝ (Pessimistic Lock)์ ์ด์ฉํ ๋์์ฑ ์ด์ ํด๊ฒฐ (1) ๊ฐ์ ์ด์ ๊ฒ์๊ธ์์ Synchronized ํค์๋๋ฅผ ์ด์ฉํ์ฌ ๋์์ฑ ์ด์๋ฅผ ํด๊ฒฐํ์์ผ๋ ์ค๋ฌด ํ๊ฒฝ์์๋ 1๋์ WAS๋ง์ ์ด์ฉํ์ง ์๊ณ ์ฌ๋ฌ ๋์ WAS ์๋ฒ๋ฅผ ์ด์ฉํ๊ธฐ ๋๋ฌธ์ Synchronized๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค. ์๋ํ๋ฉด Synchronized ํค์๋๋ ํ ๋์ WAS ์๋ฒ์์๋ง ๋๊ธฐํ ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋ผ์, ์ฌ๋ฌ ๋์ WAS ์๋ฒ์์ DB์ ํน์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ, Race Condition ์ด ๋ฐ์ํ ์ ์๋ค. ์ด์ฒ๋ผ Race Condition์ ํด๊ฒฐํ๊ธฐ ์ํด ์ด๋ฒ์๋ MySQL์์ ์ ๊ณตํ๋ Lock์ ์ด์ฉํด ๋น๊ด์ ๋ฝ์ผ๋ก ํด๊ฒฐํด๋ณด๊ณ ์ ํ๋ค. ์ด์ ๊ฒ์๊ธ์ "(2) ์ด๊ธฐ ์ค์ " ๋ถ๋ถ๋ถํฐ "(4)..
๐จ๐ป Back End/JDBC
1) Synchrozied ํค์๋๋ฅผ ์ด์ฉํ ๋์์ฑ ์ด์ ํด๊ฒฐ (1) ๊ฐ์ ์น ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ (WAS) ์์๋ HTTP ์์ฒญ ๋น User Thread๋ฅผ ๋ง๋ค๊ธฐ ๋๋ฌธ์ 1๋์ WAS์์ ๋จ์ผ DB ๋ก์ ์ธ์
์ ์์ฒญ ๊ฐ์๋งํผ ์ฌ์ฉํ๋ค. ๋ฐ๋ผ์, ์ฌ๋ฌ DB ์ธ์
์์ ํน์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋ Race Condition ์ด ๋ฐ์ํ ์ ์๋ค. ์ด์ฒ๋ผ Race Condition ์ ํด๊ฒฐํ๊ธฐ ์ํด Java์์ ์ ๊ณตํ๋ Synchronized ํค์๋๋ฅผ ์ด์ฉํด ํด๊ฒฐํด๋ณด๊ณ ์ ํ๋ค. (2) ์ด๊ธฐ ์ค์ ์ค์ต ํ๊ฒฝ MySQL 8.0 JDK 11 (IntelliJ) Spring boot 2.7 Spring JDBC 5.3.29 application.properties ์ค์ spring.datasource.driver-class-n..
1) ์ปค๋ฅ์
ํ (Connection Pool) (1) ์ปค๋ฅ์
ํ์ด๋ JDBC API๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ๊ธฐ ์ํด Connection ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ์์
์ ๋น์ฉ์ด ๊ต์ฅํ ๋ง์ด ๋๋ ์์
์ค ํ๋์ด๋ค. Connection ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ณผ์ ์ ํ ๋ฒ ์ดํด๋ณด์! โ ์ ํ๋ฆฌ์ผ์ด์
์์ DB ๋๋ผ์ด๋ฒ๋ฅผ ํตํด ์ปค๋ฅ์
์ ์กฐํํ๋ค. โก DB ๋๋ผ์ด๋ฒ๋ DB์ TCP/IP ์ปค๋ฅ์
์ ์ฐ๊ฒฐํ๋ค. (3 way handshake์ ๊ฐ์ ๋คํธ์ํฌ ์ฐ๊ฒฐ ๋์ ๋ฐ์) โข DB ๋๋ผ์ด๋ฒ๋ TCP/IP ์ปค๋ฅ์
์ด ์ฐ๊ฒฐ๋๋ฉด ์์ด๋์ ํจ์ค์๋, ๊ธฐํ ๋ถ๊ฐ ์ ๋ณด๋ฅผ DB์ ์ ๋ฌํ๋ค. โฃ DB๋ ์์ด๋, ํจ์ค์๋๋ฅผ ํตํด ๋ด๋ถ ์ธ์ฆ์ ๊ฑฐ์น ํ ๋ด๋ถ์ DB๋ฅผ ์์ฑํ๋ค. โค DB๋ ์ปค๋ฅ์
์์ฑ์ด ์๋ฃ๋์๋ค๋ ์๋ต์ ๋ณด๋ธ๋ค. โฅ DB ๋๋ผ..
1) PreparedStatment ์์ธํ ์์๋ณด๊ธฐ (1) ๊ฐ์ Statment ์ข
๋ฅ์๋ Statement, PreparedStatement, CallableStatement 3๊ฐ์ง๊ฐ ์กด์ฌํ๋ค. CallableStatement๋ PL/SQL๋ฌธ์ ํธ์ถํ ๋ ์ฌ์ฉํ๋ค๊ณ ํ์ง๋ง ์ฑ๋ฅ์ ์ด์๋ก ์ธํด ๊ฑฐ์ ์ฌ์ฉํ์ง ์๊ธฐ์ Statement๋ PreparedStatement๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. ๊ทธ๋ฐ๋ฐ ์ค๋ฌด ํ๊ฒฝ์์๋ Statement๋ ์ฐ์ง ์๊ณ PreparedStatement๋ง ์ฌ์ฉํ๋๋ฐ ๊ทธ ์ด์ ๋ฅผ ์์ ๋ณด์! (2) Statement, PreparedStatement ๋์ ๋ฐฉ์ Statement ๋ฐ PreparedStatement ๋ฐฉ์์ ์๋์ ๊ฐ์ ๊ณตํต์ ์ธ ์คํ ๊ณผ์ ์ ๊ฑฐ์น๊ฒ ๋๋ค. โ ๊ตฌ๋ฌธ ๋ถ์ (Parsin..
1) ์์ฃผ ์ฌ์ฉ๋๋ ๋ฉ์๋ ์ ๋ฆฌ in JDBC (1) Connection ๊ฐ์ฒด setAutoCommit( boolean bool) ํ์ฌ ์ธ์
์ AutoCommit ์ค์ getAutoCommit() ํ์ฌ ์ธ์
์ AutoCommit ์ค์ ๊ฐ ๋ฆฌํด commit() ํธ๋์ญ์
commit ์คํ rollback() ํธ๋์ญ์
rollback ์คํ createStatement() Statement ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ๋ฆฌํด preparedStatement(String sql) PreparedStatement ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ๋ฆฌํด ํ์ฌ์๋ Statement ๊ฐ์ฒด๋ณด๋ค๋ PreparedStatement ๊ฐ์ฒด๋ฅผ ์์ฃผ ์ฌ์ฉํ๋ค. setSavepoint(String name) Savepoint ์ง์ getTransactionIsola..
1) JDBC๋ฅผ ์ด์ฉํ CRUD ์ค์ต (1) ์ด๊ธฐ ์ค์ โ ์ค์ต ํ๊ฒฝ MySQL 8.0 JDK 11 (IDE : IntelliJ) Spring boot 2.7 โก ์ค์ต ํ
์ด๋ธ ์์ฑ // ํ
์ด๋ธ ์์ฑ CREATE TABLE MEMBER ( ID INT not null auto_increment, NAME VARCHAR(100) not null, JOB VARCHAR(30) not null, primary key (ID)); // ์ด๊ธฐ ๋ฐ์ดํฐ ์์ฑ INSERT INTO MEMBER VALUES (1, "userA", 'Student'); INSERT INTO MEMBER VALUES (2, "userB", 'Student'); INSERT INTO MEMBER VALUES (3, "userC", 'Stude..
1) JDBC (Java Database Connectivity) (1) JDBC๋ Java ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ ๋ฐ ์
๋ฐ์ดํธํ๊ฑฐ๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ Java์์ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ์๋ฐ API์ด๋ค. JDBC๋ Java ์ ํ๋ฆฌ์ผ์ด์
์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ๊ธฐ ์ํด JDBC API๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๋ํ ์ ์์ผ๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์๋ฃ๋ฅผ ์ฟผ๋ฆฌ(Query)ํ๊ฑฐ๋ ์
๋ฐ์ดํธํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค. ๋ํ, DBMS์ ์ข
๋ฅ์ ์๊ด์์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฐ๊ฒฐํ๊ณ ์์
์ ์ฒ๋ฆฌํ ์ ์๋ค. (2) JDBC Architecture Java Application์์ JDBC API๋ฅผ ํธ์ถํ๋ฉด JDBC Driver Manager๊ฐ DB ์ ํ์ ๋ฐ๋ฅธ ๋๋ผ์ด๋ฒ๋ฅผ ์์ฑํ์ฌ JDBC..