Spring/Spring DB
ํ๋ผ๋ฏธํฐ ๋ฐ์ธ๋ฉ String sql = "update item set item_name=?, price=?, quantity=? where id=?"; template.update(sql, itemName, price, quantity, itemId); JdbcTemplate์ ๊ธฐ๋ณธ์ผ๋ก ํ๋ผ๋ฏธํฐ๋ฅผ ์์๋๋ก ๋ฐ์ธ๋ฉ ํ๋ค. ์์๋ง ์ ์งํค๋ฉด ๋ฌธ์ ๊ฐ ๋ ๊ฒ์ ์๋ค. ๊ทธ๋ฐ๋ฐ ๋ฌธ์ ๋ ๋ณ๊ฒฝ์์ ์ ๋ฐ์ํ๋ค. ์์๊ฐ ๋ง์ง ์์์ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ ์๋ ์์ผ๋ฏ๋ก ์ฃผ์ํด์ ์ฌ์ฉํด์ผ ํ๋ค. ์ด๋ฆ ์ง์ ๋ฐ์ธ๋ฉ(NamedParameterJdbcTemplate) private final NamedParameterJdbcTemplate template; JdbcTemplate์ ์ด๋ฐ ๋ฌธ์ ๋ฅผ ๋ณด์ํ๊ธฐ ์ํด NamedParameterJd..
Spring/Spring DB
๋์ ์ฟผ๋ฆฌ ๋ฌธ์ ๋์ ์ฟผ๋ฆฌ๋, ์คํ ์์ ์ ํ๋ผ๋ฏธํฐ ๊ฐ์ ๋ฐ๋ผ ์ฟผ๋ฆฌ๊ฐ ๋์ ์ผ๋ก ๋ณ๊ฒฝ๋๋ ์ฟผ๋ฆฌ๋ฅผ ์๋ฏธํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๊ฒ์ ์กฐ๊ฑด์ด ์ ๋์ ์ผ๋ก ๋ณํ๋ ๊ฒ์ ์ฟผ๋ฆฌ๋, ์กฐ๊ฑด์ ๋ฐ๋ผ ๋์ ์ผ๋ก JOIN์ด ์ถ๊ฐ๋๋ ์ฟผ๋ฆฌ ๋ฑ์ด ์ด์ ํด๋นํฉ๋๋ค. // ๊ฒ์ ์กฐ๊ฑด์ด ์์ select id, item_name, price, quantity from item //์ํ๋ช
( itemName )์ผ๋ก ๊ฒ์ select id, item_name, price, quantity from item where item_name like concat('%',?,'%') //์ต๋ ๊ฐ๊ฒฉ( maxPrice )์ผ๋ก ๊ฒ์ select id, item_name, price, quantity from item where price
Spring/Spring DB
Jdbc ๋ฅผ ์ฌ์ฉํ ๋ ๋ฌธ์ ์ JDBC ๋ฐ๋ณต ๋ฌธ์ ์ปค๋ฅ์
์กฐํ, ์ปค๋ฅ์
๋๊ธฐํ PreparedStatement ์์ฑ ๋ฐ ํ๋ผ๋ฏธํฐ ๋ฐ์ธ๋ฉ ์ฟผ๋ฆฌ ์คํ ๊ฒฐ๊ณผ ๋ฐ์ธ๋ฉ ์์ธ ๋ฐ์์ ์คํ๋ง ์์ธ ๋ณํ๊ธฐ ์คํ ๋ฆฌ์์ค ์ข
๋ฃ try { con = getConnection(); pstmt = con.prepareStatement(sql); pstmt.setString(1, member.getMemberId()); pstmt.setInt(2, member.getMoney()); pstmt.executeUpdate(); return member; } catch (SQLException e) { throw exTranslator.translate("save", sql, e); } finally { close(con, pstmt..
Spring/Spring DB
DTO(data transfer object) ๋ฐ์ดํฐ ์ ์ก ๊ฐ์ฒด(๋ฐ์ดํฐ ๊ตํ์ ์ํ ๊ฐ์ฒด) DTO๋ ๊ธฐ๋ฅ์ ์๊ณ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ๋ง ํ๋ ์ฉ๋๋ก ์ฌ์ฉ๋๋ ๊ฐ์ฒด๋ฅผ ๋ปํ๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์
์์๋ ์ปจํธ๋กค๋ฌ ๊ณ์ธต๊ณผ ๋น์ฆ๋์ค ๋ก์ง ๊ณ์ธต ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ธฐ ์ํด DTO๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ปจํธ๋กค๋ฌ์์๋ ์ฌ์ฉ์๊ฐ ์
๋ ฅํ ๋ฐ์ดํฐ๋ฅผ DTO์ ๋ด์ ๋น์ฆ๋์ค ๋ก์ง ๊ณ์ธต์ผ๋ก ์ ๋ฌํ๊ณ , ๋น์ฆ๋์ค ๋ก์ง ๊ณ์ธต์์๋ ํด๋น ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ , ์ฒ๋ฆฌํ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ DTO์ ๋ด์ ์ปจํธ๋กค๋ฌ๋ก ์ ๋ฌํฉ๋๋ค. ์ด๋ ๊ฒ DTO๋ฅผ ์ฌ์ฉํ๋ฉด ๊ณ์ธต ๊ฐ์ ๋ฐ์ดํฐ ์ ๋ฌ์ด ๊ฐ์ํ๋๋ฉฐ, ๊ฐ ๊ณ์ธต์์ ํ์ํ ๋ฐ์ดํฐ๋ง์ ์ถ์ถํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค. DAO(data Access object) ๋ฐ์ดํฐ๋ฒ ์ด์ค์ data์ ์ ๊ทผํ๊ธฐ ์ํ ๊ฐ์ฒด ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ง์ ์ ์ธ..
์๊ฒฉ์ฆ/์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ
1. ์ ๋ณด์์คํ
์ด์ ์ค ์๋ฒ๊ฐ ๋ค์ด๋๊ฑฐ๋ ์์ฐ์ฌํด๋ ์์คํ
์ฅ์ ๋ฑ์ ์ด์ ๋ก ๊ณ ๊ฐ์๊ฒ ์๋น์ค๊ฐ ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ๊ฐ ์ข
์ข
๋ฐ์ํ๋ค. ์ด์ ๊ฐ์ ์ํฉ์์ ๋น์์ฌํ ๋๋ ์
๋ฌด์ค๋จ ์์ ๋ถํฐ ์
๋ฌด๊ฐ ๋ณต๊ตฌ๋์ด ๋ค์ ์ ์ ๊ฐ๋๋ ๋๊น์ง์ ์๊ฐ์ ์๋ฏธํ๋ ์ฉ์ด๊ฐ ๋ฌด์์ธ์ง ์ฐ์์ค. ๋๋ณด๊ธฐ ํด๋น ์ฉ์ด๋ "์ฅ์ ๋์ ์๊ฐ (Recovery Time Objective, RTO)" ์
๋๋ค. RTO๋ ์ฅ์ ๋ฐ์ ํ ์์คํ
์ด๋ ์๋น์ค๋ฅผ ๋ณต๊ตฌํ๊ธฐ ์ํด ํ์ํ ์๊ฐ์ ์๋ฏธํ๋ฉฐ, ์ด๋ ๊ธฐ์
์ด๋ ์กฐ์ง์ด ์ ํ ๋ชฉํ ์๊ฐ ๋ด์ ์ฅ์ ๋์ ๋ฐ ๋ณต๊ตฌ๋ฅผ ์๋ฃํด์ผ ํ๋ ์ค์ํ ์งํ ์ค ํ๋์
๋๋ค. RTO๋ ๊ธฐ์
์ด๋ ์กฐ์ง์ ์
๋ฌด์ ์์คํ
์ ๋ฐ๋ผ ๋ค๋ฅด๋ฉฐ, ๋น ๋ฅธ ๋ณต๊ตฌ ์๊ฐ์ ์ํด ์ฒ ์ ํ ๋๋น ๋ฐ ๊ณํ์ด ํ์ํฉ๋๋ค. 2. ๋ค์์ ํ์ด์ฌ ์ฝ๋์ด๋ค. ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ..
Develop/Git
Intellij ์์ ๊นํ๋ธ Repository ์์ฑํ๊ธฐ Share Project on Github : Git Repository ์ฐ๊ฒฐ ์๋ก ์์ฑํ Repository์ ์ด๋ฆ๊ณผ Private ์ฌ๋ถ, Description ๋ฑ์ ์ ์ ์ ์์ต๋๋ค. ์ต์ด ์ปค๋ฐ์ ํ๋๋ก ์ฐฝ์ด ๋น๋๋ค. Commit ๊นํ๋ธ Repository ์ ์ฐ๋ํ๊ธฐ ๋ ํฌ์งํ ๋ฆฌ์ HTTPS ์ฃผ์๋ IntelliJ ์ฐ๋์ ํ์ํ ์ฃผ์์ด๋ฏ๋ก ๋ณต์ฌ ๋นจ๊ฐ์์ผ๋ก ํ์๋ ๊ฒ์ Git์ ์ถ๊ฐ๋์ง ์์ ์ํฌ์คํ์ด์ค ํ์ผ์ด๋ผ๋ ์๋ฏธ์ด๋ค. GitHub์ Repository ์ ์ฐ๋ํ๊ธฐ ์ํ์ฌ Git -> Manage Remotes ํด๋ฆญ ๋ณต์ฌํด๋ Repository ์ฃผ์๋ฅผ ์
๋ ฅํ๋ค.
Spring/Spring DB
์คํ๋ง ์์ธ ์ถ์ํ ์คํ๋ง์ ๋ฐ์ดํฐ ์ ๊ทผ ๊ณ์ธต์ ๋ํ ์์ญ ๊ฐ์ง ์์ธ๋ฅผ ์ ๋ฆฌํด์ ์ผ๊ด๋ ์์ธ ๊ณ์ธต์ ์ ๊ณตํ๋ค. ๊ฐ๊ฐ์ ์์ธ๋ ํน์ ๊ธฐ์ ์ ์ข
์์ ์ด์ง ์๊ฒ ์ค๊ณ๋์ด ์๋ค. ๋ฐ๋ผ์ ์๋น์ค ๊ณ์ธต์์๋ ์คํ๋ง์ด ์ ๊ณตํ๋ ์์ธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค. ์๋ฅผ ๋ค์ด์ JDBC ๊ธฐ์ ์ ์ฌ์ฉํ๋ , JPA ๊ธฐ์ ์ ์ฌ์ฉํ๋ ์คํ๋ง์ด ์ ๊ณตํ๋ ์์ธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค. JDBC๋ JPA๋ฅผ ์ฌ์ฉํ ๋ ๋ฐ์ํ๋ ์์ธ๋ฅผ ์คํ๋ง์ด ์ ๊ณตํ๋ ์์ธ๋ก ๋ณํํด์ฃผ๋ ์ญํ ๋ ์คํ๋ง์ด ์ ๊ณตํ๋ค. ์คํ๋ง ๋ฐ์ดํฐ ์ ๊ทผ ์์ธ ๊ณ์ธต DataAccessException ์ ํฌ๊ฒ 2๊ฐ์ง๋ก ๊ตฌ๋ถํ๋๋ฐ NonTransient ์์ธ์ Transient ์์ธ์ด๋ค. Transient Transient ๋ ์ผ์์ ์ด๋ผ๋ ๋ป์ด๋ค. Transient ํ์ ์์ธ๋ ๋์ผํ SQL์ ๋ค..
Spring/Spring DB
์ฒดํฌ ์์ธ์ ์ธํฐํ์ด์ค ์๋น์ค ๊ณ์ธต์ ๊ฐ๊ธ์ ํน์ ๊ตฌํ ๊ธฐ์ ์ ์์กดํ์ง ์๊ณ , ์์ํ๊ฒ ์ ์งํ๋ ๊ฒ์ด ์ข๋ค. ์ด๋ ๊ฒ ํ๋ ค๋ฉด ์์ธ์ ๋ํ ์์กด๋ ํจ๊ป ํด๊ฒฐํด์ผํ๋ค. ์๋ฅผ ๋ค์ด์ ์๋น์ค๊ฐ ์ฒ๋ฆฌํ ์ ์๋ SQLException ์ ๋ํ ์์กด์ ์ ๊ฑฐํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น? ์๋น์ค๊ฐ ์ฒ๋ฆฌํ ์ ์์ผ๋ฏ๋ก ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ๋์ง๋ SQLException ์ฒดํฌ ์์ธ๋ฅผ ๋ฐํ์ ์์ธ๋ก ์ ํํด์ ์๋น์ค ๊ณ์ธต์ ๋์ง์. ์ด๋ ๊ฒ ํ๋ฉด ์๋น์ค ๊ณ์ธต์ด ํด๋น ์์ธ๋ฅผ ๋ฌด์ํ ์ ์๊ธฐ ๋๋ฌธ์, ํน์ ๊ตฌํ ๊ธฐ์ ์ ์์กดํ๋ ๋ถ๋ถ์ ์ ๊ฑฐํ๊ณ ์๋น์ค ๊ณ์ธต์ ์์ํ๊ฒ ์ ์งํ ์ ์๋ค. ์ฒดํฌ ์์ธ ์ฝ๋์ ์ธํฐํ์ด์ค ๋์
public class MemberRepositoryV3 implements MemberRepositoryEx { public Me..