Spring Transaction κ°λ¨ν ν°μΌ ꡬ맀 μλΉμ€ μμ
1. Transaction
https://hyejin.tistory.com/119?category=975063
[Database] Transactionκ³Ό Trigger
1. Transaction νΈλμμ μ΄λ λ°μ΄ν°λ² μ΄μ€ μνλ₯Ό λ³νμν€λ νλμ λ Όλ¦¬μ κΈ°λ₯μ μννκΈ° μν μμ μ λ¨μ λλ νκΊΌλ²μ μνλμ΄μΌ ν μΌλ ¨μ μ°μ°λ€μ μλ―Ένλ€. νΈλμμ μ λ°μ΄ν°λ² μ΄
hyejin.tistory.com
νΈλμμ μ΄λ λ Όλ¦¬μ μμ λ¨μλ‘,
νΈλμμ μ ꡬμ±νλ μ¬λ¬ μμ μ€ μ΄λ€ ν λΆλΆμ μμ μ΄ μλ£λμλ€κ³ νλλΌλ,
λ€λ₯Έ λΆλΆμ μμ μ΄ μλ£λμ§ μμ κ²½μ° μ 체 νΈλμμ μ μ·¨μλμ΄μΌ νλ€.
commit : νΈλμμ μ μλ£νλ κ²
rollback : νΈλμμ μ μ·¨μνλ κ²
2. Transactionμ μ΄μ©ν κ°λ¨ν ν°μΌ ꡬ맀 μλΉμ€
μ¬μ©μκ° ν°μΌ ꡬ맀λ₯Ό νλ©΄ ν°μΌ νλ§€μλ ν°μΌμ κ·Έμ λ§κ² λ°νν΄μ€μΌνλ€.
λ°λΌμ ν°μΌ ꡬ맀μ μμ μ€ ν λΆλΆλ§ μλ£λμλ€κ³ ν΄λ λ€λ₯Έ μμ μ΄ μλ£λμ§ μμΌλ©΄ νΈλμμ μ μ·¨μν΄μΌνλ€.
1οΈβ£ Table μμ±νκΈ°
SQL> create table test_card
(
user_id varchar(20) not null,
buy_amount number default 1
);
create table test_ticket
( user_id varchar(20) not null,
ticket_count number not null,
constraint ticket_buy_limit
check (ticket_count between 1 and 5)
);
μ΄λ ν°μΌ μ 곡μ¬μμλ ν μ μ idλΉ ν°μΌμ 1κ°μμ 5κ°κΉμ§λ§ ꡬ맀 κ°λ₯νλ€κ³ μ μ½μ¬νμ κ±Έμλ€.
λ°λΌμ ν μ μ κ° 6κ° μ΄μμ ꡬ맀νλ€ νλ©΄ test_card ν μ΄λΈ, test_ticket ν μ΄λΈ λͺ¨λ νΈλμμ μ μ·¨μν΄μΌνλ€.
2οΈβ£ Servlet-context.xml μ€νλ§ λΉ μ€μ νμΌ
β TransactionTemplate
μ€νλ§μμ νΈλμμ μ²λ¦¬λ₯Ό λ³΄λ€ μ½κ² νκΈ° μν΄μ μ 곡νλ€.
λΉμΌλ‘ λ±λ‘νκ³ , TicketDAO ꡬν ν΄λμ€μμ TransactionTemplate setter λ©μλμ μλμ£Όμ νλ€.
κ·Έλ¦¬κ³ λ°νκ° μ»κ² νκΈ° μν΄ TransactionCallbackWithoutResult() ν΄λμ€λ₯Ό μ¬μ©ν΄μ νΈλμμ μ²λ¦¬νλ€.
3οΈβ£ TicketVO, TicketService, TicketDAO μΈν°νμ΄μ€ λ° κ΅¬ν ν΄λμ€ μμ±
- TicketVO
- TicketService μΈν°νμ΄μ€
- TicketServiceImpl
- TicketDAO μΈν°νμ΄μ€
- TicketDAOImpl
4οΈβ£ TicketController.java
buyPage.doλ ν°μΌ ꡬ맀λ₯Ό ν μ μλ νμ΄μ§μ΄κ³ ,
buyTicket.doλ ν°μΌ ꡬ맀 νμ΄μ§ νΌμμ κ° μ λ ₯ ν ꡬ맀 λ²νΌμ λλ₯΄λ©΄ λμνλ νΈλ€λ¬μ΄λ€.
μ΄λ ν°μΌ κ°μκ° 5κ°κ° λμ΄κ°λ©΄ μλ¬κ° λ°μνκΈ° λλ¬Έμ μλ¬κ° λ°μνμ§ μλλ€λ©΄ ticketSetviceμ buyTicket() μμ μ μννκ³ ticket/buyDone.jsp λ·° μ΄λ¦μ 리ν΄νλ€.
κ·Έλ¦¬κ³ μλ¬κ° λ°μνλ€λ©΄ ticket/buyFail.jsp λ·° μ΄λ¦μ 리ν΄νλ©° ticketServiceμ buyTicket() μμ μ μννμ§ μμ νΈλμμ μμ μ μ·¨μνλ€.
5οΈβ£ buyPage.jsp, buyDone.jsp, buyFail.jsp
- buyPage.jsp
- buyDone.jsp
- buyFail.jsp
6οΈβ£ μ€ν κ²°κ³Ό