본문 바로가기

Spring/Spring DB10

문제해결 - JDBC 반복 문제점기존에 JDBC를 통해 쿼리를 요청할 경우예외변환 및 커넥션 관리 로직이 비즈니스 로직에 누수되는 문제가 있다.public class MemeberRepositoryImpl implements MemberRepository { private final DataSource dataSource; private final SQLExceptionTranslator exTranslator; public MemberRepositoryImpl(DataSource dataSource) { this.dataSource = dataSource; this.exTranslator = new SQLErrorCodeSQLExceptionTranslator(dataSource); .. 2025. 7. 28.
문제해결 - 예외처리 문제점스프링에서는 인터페이스를 이용하여 Service와 Repository를 구현하곤 한다여기서 체크예외를 사용했을 때의 문제점은 아래와 같다 1. 예외누수2. JDBC와 같은 특정 기술에 종속 예외누수아래와 같은 구조로 Member에 대한 비즈니스 로직을 구현한다고 가정하자 아래는 MemberRepository와 MemberRepository의 구현체 MemberRepositoryImpl의 코드이다public interface MemberRepository { Member save(Member member) throws SQLException; Member findById(String memberId) throws SQLException; void update(String member.. 2025. 7. 28.
자바 예외(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.