!โญ๏ธ๋ชฉ์ฐจ๋ฅผ ํตํด ์์ฐจ์ ์ผ๋ก ๊ฐ๋
์ ํ์
ํ๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค.
!โญ๏ธ๋ชฉ์ฐจ
JDBC๊ฐ ๋ฌด์์ธ์ง ์์๋ณด๊ณ , ์ฌ์ฉํด๋ณด๊ธฐ
์ปค๋ฅ์
ํ์ด ์ฃผ๋ ์ด์ ๊ณผ ๋ฐ์ดํฐ์์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ๋์์ง๋ ์ ์ด ์ด๋ค๊ฒ์ธ์ง ์์๋ณด๊ธฐ
Transaction์ด ๋ฌด์์ด๊ณ ์ ํ์ํ์ง ์์๋ณด๊ธฐ
์คํ๋ง์ผ๋ก ๋จ์ Transaction ์ ์ฉ์ ๋ฌธ์ ์ ์ ํด๊ฒฐํ๋ ๊ณผ์ ์์๋ณด๊ธฐ
JdbcTemplate์ ์ ์ฉ์ผ๋ก ์ป์ ์ฅ์ ์์๋ณด๊ธฐ
DB์ ๋ฐ์ดํฐ๊ฐ ์ค๊ฐ๋ ํ
์คํธ๋ฅผ ์งํํ ๋, ํ
์คํธ์์ DB๋ฅผ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ๊ณผ ํธ๋์ญ์
์ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ ๊ฒฉ๋ฆฌ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ ์์๋ณด๊ธฐ
MyBatis๋ก ๋์ ์ฟผ๋ฆฌ ์์ฑ ๋ฐฉ๋ฒ ์์๋ณด๊ธฐ
JPA์ JPA๊ฐ ์ ๊ณตํ๋ ORM์ ์ด์ ์์๋ณด๊ธฐ
AOP๋ฅผ ํตํด ํ๋ก์๊ฐ ์์ฑ๋์ด ์๋์ผ๋ก ํธ๋์ญ์
์ฒ๋ฆฌ๊ฐ ๋๋ ๊ณผ์ ์์๋ณด๊ธฐ
ํธ๋์ญ์
์์ ๋ ํธ๋์ญ์
์ด ์์ฑ๋๋ฉด ์ด๋ป๊ฒ ๋๋์ง ์์๋ณด๊ธฐ
์๋ณธ ๋งํฌ
19๊ฑด์ ํญ๋ชฉ
2025๋
3์ 16์ผ
ํธ๋์ญ์
์ ํ(Transaction Propagation) ์ ์ ํธ๋์ญ์
์ด ํ๋ ์์ํ ์ํ์์ ๋ ๋ค๋ฅธ ํธ๋์ญ์
์ ์์ํ๋ฉด ์ ํธ๋์ญ์
์ ์์ฑํ ์ง, ๊ธฐ์กด ํธ๋์ญ์
์ ์ฐธ์ฌํ ์ง ๋ฑ๋ฑ์ ๊ฒฐ์ ํ๋ ๋ฐฉ์ Spring์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ธฐ์กด ํธ๋์ญ์
์ ์ฐธ์ฌํ๋ ๋ฐฉ์์ด ๊ธฐ๋ณธ๊ฐ์ด๊ณ , ์ํ ์ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํฉ๋๋ค ...
2025๋
3์ 15์ผ
AOP(Aspect-Oriented Programming)์ ์ ์ ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ(AOP) ์ ์ด์ฉํ์ฌ ํธ๋์ญ์
๊ด๋ฆฌ๋ฅผ ์๋ํํ๋ ๊ธฐ๋ฒSpring์์๋ @Transactional์ ์ฌ์ฉํ๋ฉด ํ๋ก์๊ฐ ์์ฑ๋๋ฉฐ AOP๊ฐ ์๋์ผ๋ก ์ ์ฉ๋ฉ๋๋ค. ํ๋ก์๋? ์๋์ผ๋ก ๋ง๋ค์ด์ ธ์ ์๋ ๊ฐ์ฒด ๋์ ํด์ ์์ฒญ์ ๋ฐ๊ณ , ๋ก์ง์ ์ํํ๋ ์ค๊ฐ ์ญํ ์ ๊ฐ์ฒด์
๋๋ค.
2025๋
3์ 12์ผ
Querydsl์ ์ ์ Java ์ฝ๋ ๊ธฐ๋ฐ์ผ๋ก SQL, JPA, MongoDB ๋ฑ์ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ์ ์๋๋ก ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌJPA์ ํจ๊ป ์ฌ์ฉํ ๊ฒฝ์ฐ, ์ปดํ์ผ ํ์์ ๊ฒ์ฆ ๊ฐ๋ฅํ ์ฝ๋๋ก ๋ณต์กํ ๋์ ์ฟผ๋ฆฌ๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ ์ ์์ต๋๋ค. Qํด๋์ค Querydsl์ด ์ํฐํฐ๋ฅผ ๋์์ผ๋ก ์๋ ์์ฑํ๋ ํด๋์คํด๋น ํด๋์ค๋ฅผ ํตํด Java ์ฝ๋ ๊ธฐ๋ฐ์ผ๋ก ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ์ ์๊ฒ ๋ฉ๋๋ค.
2025๋
3์ 10์ผ
JPA์ ์ ์ JPA(Java Persistence API)๋ ์๋ฐ ๊ฐ์ฒด๋ฅผ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋งคํ(ORM, Object-Relational Mapping)ํ๊ธฐ ์ํ ํ์ค API์ฆ, DB์ ๋ฐ์ดํฐ๋ค์ ๊ฐ์ฒด ๋ค๋ฃจ๋ฏ์ด ๋ค๋ฃฐ ์ ์๋๋ก ํด์ค๋๋ค. ORM ๋งคํ ํ๋ก์ ํธ์ ๊ฐ์ฒด์ ์ด ๊ฐ์ฒด์ ํด๋นํ๋ DB์ ํ
์ด๋ธ์ ๋งคํํ ์ ์์ต๋๋ค.
2025๋
3์ 09์ผ
MyBatis์ ์ ์ JdbcTemplate์ด ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฉด์ ์ถ๊ฐ๋ก ๋์ ์ฟผ๋ฆฌ๋ฅผ ํธ๋ฆฌํ๊ฒ ์์ฑํ ์ ์๊ฒ ํ๋ SQL Mapper XML์ ํตํด SQL ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๊ณ ๊ธฐ๋ฅ์ ๋งคํํ ์ ์์ต๋๋ค. ์ ์ฉ ๋ฐฉ๋ฒ findAll()์์ ๊ฒ์ ๊ธฐ๋ฅ์ด ์๊ณ , ๊ฒ์ ์กฐ๊ฑด์ ๋ฃ๊ธฐ ์ํ MemberSearchCond๊ฐ ์๋ ์ํฉ์ด๋ผ๊ณ ์๊ฐํด๋ณด๊ฒ ์ต๋๋ค.
2025๋
3์ 08์ผ
๋ฐ์ดํฐ ๊ฒฉ๋ฆฌ ์ฒ๋ฆฌ๊ฐ ํ์ํ ์ด์ ๊ฐ ํ
์คํธ๋ณ๋ก ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๊ฐ ๋๋ฉด, ์ด๋ ๋ค๋ฅธ ํ
์คํธ์ ์ํฅ์ ์ค ์ ์๊ณ , ๋ ํ
์คํธ๋ฅผ ์ค๋ณต ์คํํ ๋ ์ด์ ์ ์ฑ๊ณตํ๋ ํ
์คํธ๊ฐ ๋ค์์ ์คํจํ๊ฒ ๋ ์ ์์ต๋๋ค. ํ
์คํธ์ ์ผ๊ด์ฑ์ ์ ์งํ๊ณ , ๋ค๋ฅธ ํ
์คํธ์ ๊ฐ์ญ์ ํ์ง ์๊ธฐ ์ํด์ ํ
์คํธ๋ฅผ ์ํด ์์ฑํ๋ ๋ฐ์ดํฐ๋ ํ
์คํธ๊ฐ ๋๋๋ฉด ๋ชจ๋ ์ง์์ค์ผ ํฉ๋๋ค.
2025๋
3์ 08์ผ
์ง์ ์ฐ๊ฒฐ test ํด๋ ํ์์ resources/application.properties์๋ spring.datasource.~ ์ค์ ์ ์ถ๊ฐํด ์ค๋๋ค. # properties spring.profiles.active = test spring.datasource.url = jdbc:h2:tcp://localhost/~/test spring.datasource.username = sa spring.datasource.password = ์๋ฒ ๋๋ DB ์ฐ๊ฒฐ 1.
2025๋
3์ 07์ผ
JdbcTemplate์ ์ ์ ํ
ํ๋ฆฟ ์ฝ๋ฐฑ ํจํด์ ์ฌ์ฉํ์ฌ JDBC๋ฅผ ์ง์ ์ฌ์ฉํ ๋ ๋ฐ์ํ๋ ๋ฐ๋ณต ์์
์ ๋์ ์ฒ๋ฆฌํด์ฃผ๋ ์ ํธ๋ฆฌํฐ JDBC ๋จ์ ์ฌ์ฉ๊ณผ์ ๋น๊ต [Before] @RequiredArgsConstructor public class BeforeRepository { private final DataSource ...
2025๋
3์ 06์ผ
SQLExceptionTranslator์ ์ ์ Spring์์ ์ฒดํฌ ์์ธ์ธ SQLException์ ์ ์ ํ DataAccessException ๊ณ์ด์ ์์ธ๋ก ๋ณํํ๋ ์ธํฐํ์ด์ค ์ฌ์ฉ๋ฒ translate() ์ฌ์ฉ DataAccessException translate(String task, @Nullable ...
2025๋
3์ 06์ผ
DataAccessException์ ์ ์ ๋ฐ์ดํฐ ์ ๊ทผ ์ค ๋ฐ์ํ๋ ์์ธ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด Spring์์ ์ ๊ณตํ๋ ๋ฐํ์ ์์ธ ์ฒดํฌ ์์ธ๋ก ์ ์ธ๋ ๊ฒฝ์ฐ ๋งค๋ฒ throws๋ก ์ ํํด์ผ ํ๋ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๊ณ , ์ผ๊ด๋ ์์ธ ์ฒ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ๊ณ์ธต DataAccessException ํ์๋ก SQL ๋ฌธ๋ฒ ์ค๋ฅ, ํ์์์ ์ค๋ฅ ๋ฑ ์ฌ๋ฌ ๋ฐ์ดํฐ ์ ๊ทผ ์ํฉ์์ ๋ฐ์ํ๋ ์๋ฌ๋ค์ด ๊ตฌํ๋์ด ์์ต๋๋ค.
2025๋
3์ 03์ผ
@Transactional์ ์ ์ ํธ๋์ญ์
์ ์์ํ๊ณ ์ปค๋ฐ, ๋กค๋ฐฑ ํ ํธ๋์ญ์
์ ์ข
๋ฃํ๋ ๊ณผ์ ์ ์๋น์ค ๋ก์ง์์ ๋ถ๋ฆฌํ๊ธฐ ์ํด ํธ๋์ญ์
ํ๋ก์๋ฅผ ๋ง๋๋ ๊ณผ์ ์ ์ฒ๋ฆฌํด์ฃผ๋ ์ด๋
ธํ
์ด์
์ฌ์ฉ ์์ 1. ํด๋์ค์์ ์ฌ์ฉ @Transactional public class Service() { public void save() { } public void delete() { } } ์ ๋ฆฌ ํด๋์ค์์ @Transactional ์ฌ์ฉ ์ ํ์์ ๋ชจ๋ ๋ฉ์๋์ธ save(), delete()์ ํธ๋์ญ์
์ด ์ ์ฉ๋ฉ๋๋ค.
2025๋
3์ 03์ผ
TransactionTemplate์ ์ ์ ํ
ํ๋ฆฟ ์ฝ๋ฐฑ ํจํด์ ์ ์ฉํ์ฌ Transaction ๊ณผ์ ์์ ๋ฐ๋ณต์ ์ผ๋ก ์์
ํ๋ ํธ๋์ญ์
๋ง๋ค๊ธฐ -> ์ค๋ฅ ์์ผ๋ฉด commitํ๊ธฐ -> ์ค๋ฅ ์์ผ๋ฉด rollbackํ๊ธฐ๊ณผ์ ์ ๊ฐ๋จํ๊ฒ ์งํํ๊ฒ ํด ์ฃผ๋ ํด๋์ค์
๋๋ค. ๊ธฐ๋ฅ public class TransactionTemplate { private PlatformTransactionManager transactionManager; public <T> T execute(TransactionCallback<T> action){..} void executeWithoutResult(Consumer<TransactionStatus> action){..} } execute() : ์๋ต ๊ฐ์ด ์์ ๋ ์ฌ์ฉํฉ๋๋ค.
2025๋
3์ 03์ผ
PlatformTransactionManager์ ์ ์ ํธ๋์ญ์
์ ์์ํ๊ณ ์ปค๋ฐ, ๋กค๋ฐฑํ๋ ๊ณผ์ ์ JDBC์ ๊ฐ์ ํน์ ๋ฐ์ดํฐ ์ ๊ทผ ๊ธฐ์ ์ ์ข
์๋์ง ์๊ฒ ํ๊ธฐ ์ํด ์ถ์ํํ์ฌ ๋ง๋ ์ธํฐํ์ด์ค ๊ตฌ์กฐ ๊ธฐ๋ฅ [์ธํฐํ์ด์ค ์ ์ฒด ๊ตฌ์กฐ] package org.springframework.transaction; public interface ...
2025๋
3์ 03์ผ
Transaction ๋จ์ ์ฒ๋ฆฌ ์ ๋ฌธ์ ์ Transaction์ ๋จ์ ์ฒ๋ฆฌํ Service๋ฅผ ํ์ธํ๋ฉด ์๋น์ค ๋ก์ง ๋ฟ๋ง์ด ์๋ ๊ณผ์ ์ด ๋ง์ด ํฌํจ์ด ๋์ด๋ฒ๋ฆฌ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ์ด์ฒ๋ผ ๋จ์ํ๊ฒ ์ปค๋ฅ์
์์ Transaction์ ๋ง๋ค์ด ์ปค๋ฐ or ๋กค๋ฐฑ ์ฒ๋ฆฌ๋ฅผ ํ๊ฒ๋๋ฉด ์ฌ๋ฌ ๋ฌธ์ ์ ์ด ๋ํ๋๊ฒ ๋ฉ๋๋ค.
2025๋
3์ 02์ผ
Transaction์ ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ํ๋ฅผ ๋ณํ์ํค๊ธฐ ์ํด ์ํํ๋ ์์
์ ๋จ์ ex) A๊ฐ B์๊ฒ 5000์์ ์ก๊ธํ๋ ๊ฒฝ์ฐ โ A์ ์๊ณ ์์ 5000์์ ๊ฐ์์ํค๊ณ , B์ ์๊ณ ์์ 5000์์ ์ฆ๊ฐ์ํค๋ ์์
์ด ํ๋์ Transaction์ด ๋ฉ๋๋ค. Transaction์ด ์์ง์ผ์ ธ ๋ฌธ์ ๊ฐ ๋๋ ๊ฒฝ์ฐ A๊ฐ B์๊ฒ 5000์ ์ก๊ธ์ ํ๋๋ฐ, ์คํ๋ก ์ธํด ์๋์ ๊ฐ์ด ์คํ๋๋ฉด ๋ฌธ์ ๊ฐ ์๊น๋๋ค.
2025๋
2์ 28์ผ
1. JDBC JDBC๊ฐ ๋ฌด์์ธ์ง ์์๋ณด๊ณ , ์ฌ์ฉํด๋ณด๊ธฐ 2. Connection Pool๊ณผ DataSource ์ปค๋ฅ์
ํ์ด ์ฃผ๋ ์ด์ ๊ณผ ๋ฐ์ดํฐ์์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ๋์์ง๋ ์ ์ด ์ด๋ค๊ฒ์ธ์ง ์์๋ณด๊ธฐ 3. Transaction Transaction์ด ๋ฌด์์ด๊ณ ์ ํ์ํ์ง ์์๋ณด๊ธฐ 4.
2025๋
2์ 28์ผ
์ปค๋ฅ์
ํ์ ํ์์ฑ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ๋ฒ Connection์ ๋ง๋ค ๋ ๋ง๋ค ์๋์ ๊ฐ์ ๋ณต์กํ ๊ณผ์ ์ ๊ฑฐ์นฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์
๋ก์ง์ DB ๋๋ผ์ด๋ฒ๋ฅผ ํตํด ์ปค๋ฅ์
์ ์กฐํํ๋ค. DB ๋๋ผ์ด๋ฒ๋ DB์ TCP/IP ์ปค๋ฅ์
์ ์ฐ๊ฒฐํ๋ค. ๋ฌผ๋ก ์ด ๊ณผ์ ์์ 3 way handshake ๊ฐ์ TCP/IP ์ฐ๊ฒฐ์ ์ํ ๋คํธ์ํฌ ๋์์ด ๋ฐ์ํ๋ค.
2025๋
2์ 28์ผ
DataSource์ ํ์์ฑ ์ปค๋ฅ์
์ ํ๋ํ๋ ๋ฐฉ๋ฒ์ DriverManager, Connection Pool ๋ฑ ๋ค์ํ๊ฒ ์์ต๋๋ค. DriverManager๋ฅผ ํตํด ์ปค๋ฅ์
์ ํ๋ํ๋๋ก ๋ก์ง์ ๊ตฌ์ฑํ๋ค๊ฐ, ์ปค๋ฅ์
ํ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ณ๊ฒฝํ๋ฉด ๋ก์ง์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
2025๋
2์ 28์ผ
JDBC ์ ์ Java์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๋์ ์ํด์ ๋จผ์ ์ปค๋ฅ์
์ฐ๊ฒฐ์ ํ์ธํ๊ณ SQL์ ์ ๋ฌํด DB๋ก๋ถํฐ ๊ฒฐ๊ณผ๋ฅผ ์๋ต๋ฐ์ต๋๋ค.๊ทธ๋ฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ข
๋ฅ(ex) MySQL, Oracle)์ ๋ฐ๋ผ ์ปค๋ฅ์
์ฐ๊ฒฐ, SQL, ๊ฒฐ๊ณผ ์๋ต์ ๋ํ ๋ฐฉ๋ฒ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ณ๋ก ์ฝ๋๋ฅผ ๊ฐ๊ฐ ์์ฑํ๋ ๋์ , ์๋ฐ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ํ ...