분류 전체보기68 자바 예외(Exception) 자바에서는 예외에 대해 대응할 수 있도록 "예외 계층"을 제공한다예외 계층자바의 예외는 아래 그림과 같이 존재한다먼저, 모든 예외는 클래스이기 때문에 Object를 상속받도록 되어있다.자바에서 예외는 Exception과 Error로 구분되어 있다.Error는 메모리 부족 등의 애플리케이션 레벨에서 복구 불가능한 예외를 의미한다. 애플리케이션 개발자는 이 예외를 잡으려고 하면 안 된다.Exception은 애플리케이션 레벨에서 대응가능한 실질적인 최상위 예외이다.Exception의 하위 예외들은 컴파일러에서 체크하는 예외이다. 이를 Checked Exception이라고 한다.단, RuntimeException과 그 하위 예외들은 컴파일러에서 체크하지 않는 예외이다. 이를 Unchecked Exception이.. 2025. 7. 21. 문제해결 - 트랜잭션 동기화 문제 트랜잭션은 동일한 Connection 안에서만 동일한 트랜잭션으로 간주된다그래서 트랜잭션이 종료될 때까지 동일한 Connection을 유지해야 하므로데이터 접근계층 로직 간에 같은 커넥션을 사용할 필요가 있다 아래의 코드를 보자아래 코드의 경우에는 데이터 접근계층 로직 간에 같은 커넥션을 사용하기 위해데이터 접근계층 로직을 호출할 때마다 Connection객체를 인자로 받도록 되어있다이는 OCP 원칙에 위배되며 메서드의 확장이 어렵게 된다는 문제가 있다public class MemberRepository{ Member save(Connection connection, Member member) throws SQLException; Member findById(Connection connecti.. 2025. 7. 19. 문제해결 - 트랜잭션 처리 코드 반복 문제 트랜잭션을 처리하기 위해서는 서비스 계층의 비즈니즈 로직에서 일일이 코드를 작성해야했다public void accountTransfer(String fromId, String toId, int money) throws SQLException { Connection connection = dataSource.getConnection(); try{ //트랜잭션 시작 connection.setAutoCommit(false); //비즈니스 로직 수행 bizLogic(connection, fromId, toId, money); //트랜잭션 종료 connection.commit(); } catch (Exception.. 2025. 7. 19. DB Lock 개념내 트랜잭션이 아직 commit되지 않았을 때, 다른 세션의 사용자가 데이터를 변경하는 것을 막는 것예) A의 트랜잭션이 먼저 시작되었고 아직 commit이 안 됐을 때, B가 데이터를 변경하는 것을 막는다등장배경어느 학습시스템에 수료증발급 기능이 있다고 치자.수료증에는 발급번호가 부여되며, 발급번호는 순차적으로 부여되어야 한다발급번호 생성을 위해, 발급번호의 최대값을 조회한 뒤 최대값에 1을 더하는 동작을 비즈니즈 로직에서 처리한다public int createDocNo(){ int max = getMax() return max+1;}A라는 사용자가 수료증 발급번호 생성을 위해 최대값을 조회 후 max+1을 실행하는 도중에만약, B가 수료증 발급번호 생성을 시도해서 최대값을 변경하려고 하.. 2025. 7. 18. 이전 1 2 3 4 ··· 17 다음