본문 바로가기

Spring/DB 1편7

스프링과 문제 해결 - 예외 처리, 반복 체크 예외와 인터페이스 서비스가 처리할 수 없으므로 리포지토리가 던지는 SQLException 체크 예외를 런타임 예외로 전환해서 서비스 계층에 던지자. //체크 예외 적용 인터페이스 public interface MemberRepositoryEx { Member save(Member member) throws SQLException; Member findById(String memberId) throws SQLException; void update(String memberId, int money) throws SQLException; void delete(String memberId) throws SQLException; } //런타임 적용 인터페이스 public interface MemberRepo.. 2023. 8. 10.
자바 예외 이해 Object : 예외도 객체이다. 예외의 최상위 부모도 Object 이다. Throwable : 최상위 예외이다. 하위에 Exception 과 Error 가 있다. Error : 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구 불가능한 시스템 예외이다. 애플리케이션 개발자는 이 예외를 잡으려고 해서는 안된다. 애플리케이션 로직은 Exception 부터 필요한 예외로 생각하고 잡으면 된다. Error 도 언체크 예외이다. Exception : 체크 예외 애플리케이션 로직에서 사용할 수 있는 실질적인 최상위 예외이다. Exception 과 그 하위 예외는 모두 컴파일러가 체크하는 체크 예외이다. (RuntimeException 은 예외) RuntimeException : 언체크 예외, 런타임.. 2023. 8. 9.
스프링과 문제 해결 - 트랜잭션 프레젠테이션 계층 UI와 관련된 처리 담당 웹 요청과 응답 사용자 요청을 검증 주 사용 기술: 서블릿과 HTTP 같은 웹 기술, 스프링 MVC 서비스 계층 비즈니스 로직을 담당 주 사용 기술: 가급적 특정 기술에 의존하지 않고, 순수 자바 코드로 작성 데이터 접근 계층 실제 데이터베이스에 접근하는 코드 주 사용 기술: JDBC, JPA, File, Redis, Mongo ... ★ 순수한 서비스 계층 : 비즈니스 로직은 최대한 변경없이 유지되어야 한다. → 서비스 계층을 특정 기술에 종속적이지 않게 개발해야 한다. 프레젠테이션 계층은 클라이언트가 접근하는 UI와 관련된 기술인 웹, 서블릿, HTTP와 관련된 부분을 담당해준다. 데이터 접근 계층은 데이터를 저장하고 관리하는 기술을 담당해준다. 서비스 계층.. 2023. 8. 9.
트랜잭션 이해 트랜잭션 ≒ 거래 트랜잭션 ACID(http://en.wikipedia.org/wiki/ACID) 원자성: 트랜잭션 내에서 실행한 작업들은 마치 하나의 작업인 것처럼 모두 성공 하거나 모두 실패해야 한다. 일관성: 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 한다. 예를 들어 데이터베이스에서 정한 무결성 제약 조건을 항상 만족해야 한다. 격리성: 동시에 실행되는 트랜잭션들이 서로에게 영향을 미치지 않도록 격리한다. 예를 들어 동시에 같은 데이터를 수정하지 못하도록 해야 한다. 격리성은 동시성과 관련된 성능 이슈로 인해 트랜잭션 격리 수준 (Isolation level)을 선택할 수 있다. 지속성: 트랜잭션을 성공적으로 끝내면 그 결과가 항상 기록되어야 한다. 중간에 시스템에 문제가 발생해도 .. 2023. 8. 9.