Framework & Library/JDBC

[JDBC] JDBC νŠΈλžœμž­μ…˜ 처리

gangintheremark 2023. 8. 3. 12:20
728x90

πŸ’ͺ νŠΈλžœμž­μ…˜ μ°Έκ³ 

πŸ’‘ νŠΈλžœμž­μ…˜
μ—¬λŸ¬ 개의 μž‘μ—…λ“€μ„ ν•˜λ‚˜μ˜ μž‘μ—…μ²˜λŸΌ μ²˜λ¦¬ν•΄μ•Ό λ˜λŠ” 경우 μ΄μš©λœλ‹€. ν•˜λ‚˜ μ΄μƒμ˜ DML이 λͺ¨μ—¬ ν•˜λ‚˜μ˜ νŠΈλžœμž­μ…˜μœΌλ‘œ κ΅¬μ„±ν•œλ‹€.

JDBCμ—μ„œ λͺ¨λ“  DML μž‘μ—…μ΄ μžλ™μœΌλ‘œ auto commit λœλ‹€. ν•˜μ§€λ§Œ νŠΈλžœμž­μ…˜μœΌλ‘œ μ²˜λ¦¬ν•΄μ•Όλ§Œ ν•˜λŠ” μž‘μ—…μ—μ„œλŠ” λͺ…μ‹œμ μœΌλ‘œ auto commit을 λΉ„ν™œμ„±ν™”ν•œ ν›„ μž‘μ—…ν•΄μ•Ό ν•œλ‹€.

 

Service ν΄λž˜μŠ€μ—μ„œ Connection API의 setAutoCommit() λ©”μ„œλ“œλ₯Ό μ΄μš©ν•˜μ—¬ μžλ™ commit을 λΉ„ν™œμ„±ν™” μ‹œν‚€κ³  이 ν›„ commit() rollback() λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ νŠΈλžœμž­μ…˜μ„ μ²˜λ¦¬ν•  수 μžˆλ‹€. λ©”μ„œλ“œκ°€ λͺ¨λ‘ μ„±κ³΅ν•˜λ©΄ commit(), λ§Œμ•½ ν•˜λ‚˜λΌλ„ μ˜ˆμ™Έκ°€ λ°œμƒν•˜λ©΄ rollback() 으둜 μ²˜λ¦¬ν•œλ‹€.

    // update , delete κΈ°λŠ₯ => νŠΈλžœμž­μ…˜ 처리 
    @Override
    public int updateAndDelete(DeptDTO dto, int deptno) {
        int n = 0;
        Connection con = null;
        try {
            con = DriverManager.getConnection(url, userid, passwd);
            DeptDAO dao = new DeptDAO();

            con.setAutoCommit(false); // μžλ™ commit λΉ„ν™œμ„±ν™”

            // μˆ˜μ • DAO 연동
            n = dao.update(con, dto);

            // μ‚­μ œ DAO 연동
            n = dao.delete(con,  deptno);

            con.commit(); // λ‘˜ λ‹€ 성곡 μ‹œ commit
        } catch (SQLException e) {
            try {
                if(con != null)
                    con.rollback(); // ν•˜λ‚˜λΌλ„ μ˜ˆμ™Έ λ°œμƒ μ‹œ rollback
            } catch(SQLException e2) {
                e2.printStackTrace();
            }
        }
        return n;
    }
 

[JDBC] DAO 및 DTO νŒ¨ν„΄ μ‚¬μš© μ‹€μŠ΅

이전 κΈ€ μ°Έκ³  ν•„μˆ˜ ✨ [JDBC] DAO νŒ¨ν„΄ 및 DTO νŒ¨ν„΄ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ—°λ™ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•  λ•Œ λ°˜λ“œμ‹œ μ‚¬μš©λ˜λŠ” 2κ°€μ§€ 개발 νŒ¨ν„΄μ΄ μžˆλ‹€. DAO (Data Access Object) νŒ¨ν„΄ DB의 데이터에 μ ‘κ·Όν•˜κΈ° μœ„ν•œ

gangintheremark.tistory.com

 

 

728x90