스프링과 문제 해결 - 예외 처리, 반복체크 예외와 인터페이스인터페이스의 구현체가 체크 예외를 던지려면 인터페이스 메소드에 먼저 체크 예외를 던지는 부분이 선언되어 있어야 하는데 이 경우 인터페이스 자체도 특정 기술에 종속되어 버린다.구현 기술을 쉽게 변경하기 위해서 인터페이스를 도입하더라도 특정 구현 기술에 종속되어 버려 순수한 인터페이스가 아니게 된다.런타임 예외의 경우에는 인터페이스에 따로 선언하지 않아도 되기에 인터페이스가 특정 기술에 종속적일 필요가 없다. public class MyDbException extends RuntimeException {...}public interface MemberRepository { Member save(Member member); Member f..
자바 예외예외 계층예외 계층 구조Object : 모든 객체의 최상위 부모이기에 예외의 최상위 부모이다.Throwable : 최상위 예외로 하위에 Exception, Error가 있다. Error : 메모리 부족, 시스템 오류와 같은 애플리케이션에서 복구 불가능한 시스템 예외이다.애플리케이션 개발자는 Error 예외를 잡아서는 안된다.상위 예외를 잡으면 하위 예외도 잡히므로 Throwable도 잡아서는 안된다.Exception : 체크 예외로 애플리케이션 로직에서 사용할 수 있는 실질적인 최상위 예외이다.RuntimeException을 제외한 Exception의 하위 예외(SQLException, IOException ...)는 모두 체크 예외이다.RuntimeException : 언체크 예외, 런타임 예..
스프링과 문제 해결 - 트랜잭션애플리케이션 구조애플리케이션 구조프레젠테이션 계층UI 관련된 처리 담당웹 요청과 응답사용자 요청을 검증주 사용 기술 - 서블릿 & HTTP와 같은 웹 기술, 스프링 MVC서비스 계층비지니스 로직을 담당가장 중요한 곳이기에 다른 계층의 기술이 변경되도 서비스 계층은 최대한 변경 없이 유지되어야 한다.그러기 위해서 특정 기술에 종속되지 않도록 개발해야한다.주 사용 기술 - 특정 기술에 의존하지 않고 순수 자바 코드로 작성데이터 접근 계층실제 DB에 접근하는 코드주 사용 기술 - JDBC, JPA, File, Redis, Mongo ... 문제점/** * 트랜잭션 - 파라미터 연동, 풀을 고려한 종료 */@RequiredArgsConstructor@Slf4jpublic class..
트랜잭션데이터를 저장할 때 단순히 파일이 아닌 DB에 저장하는 이유는?DB가 트랜잭션을 지원해주기 때문에트랜잭션 : DB에서 하나의 거래를 안전하게 처리하도록 보장해주는 것으로 DB에서 일어나는 논리적인 작업 단위여러 작업(쿼리)을 하나의 작업처럼 묶어서 동작해야 한다.커밋 (Commit) : 모든 작업이 성공해서 DB에 정상 반영하는 것롤백 (Rollback) : 작업 중 하나라도 실패해서 작업 이전으로 되돌리는 것트랜잭션이 커밋되거나 롤백되면 해당 트랜잭션은 종료된다.트랜잭션은 커넥션 내에서 관리되며 특정 커넥션에 종속적이다.커넥션이 열려있어야 트랜잭션을 시작하거나 완료할 수 있다.트랜잭션 ACID트랜잭션은 ACID를 보장해야 한다. 트랜잭션 ACID원자성 (Atomicity) : 트랜잭션 내에서 실..
커넥션 풀커넥션 획득 과정애플리케이션 로직은 DB 드라이버를 통해 커넥션을 조회한다.DB 드라이버는 DB와 TCP/IP 커넥션을 연결한다.3 way handshake와 같은 동작 발생DB 드라이버는 TCP/IP 커넥션이 연결되면 ID, PW와 기타 부가정보를 DB에 전달한다.DB는 ID, PW를 통해 내부 인증을 완료하고 내부에 DB 세션을 생성한다.DB는 커넥션 생성이 완료되었다는 응답을 보낸다.DB 드라이버는 커넥션 객체를 생성해 클라이언트에 반환한다. 커넥션은 새로 만드는 과정이 복잡하고 시간과 리소스가 많이 소요되며 응답 속도에 영향을 준다.이런 문제를 해결하기 위한 방법이 커넥션 풀이다. 커넥션 풀 : 커넥션을 미리 생성해두고 관리하는 풀이다.애플리케이션 시작 시점에 커넥션 풀은 필요한 커넥션을..
JDBC일반적으로 클라이언트가 애플리케이션 서버를 통해 데이터를 저장하거나 조회 -> 애플리케이션 서버에서 DB 사용TCP/IP를 사용해서 커넥션 연결DB에게 연결된 커넥션을 통해 DB가 이해할 수 있는 SQL을 전달DB는 SQL 수행 후 결과를 응답하고 그 결과를 서버는 활용 커넥션 : 애플리케이션(클라이언트)과 DB 서버간의 물리적 / 논리적 연결로 DB와 통신하기 위해 필요한 것 과거에는 각 데이터베이스마다 커넥션 연결 방법, SQL 전달 방법, 결과를 응답 받는 방법이 모두 달랐다.다른 종류의 DB로 변경 시 DB 사용 코드도 모두 변경해야 한다.이런 문제로 인해 JDBC 표준 인터페이스가 등장했다. JDBC (Java Database Connectivity) 표준 인터페이스 : 자바에서 데이터베..