Spring-Boot/스프링 DB 1편 - 데이터 접근 핵심 원리
-
스프링 DB 데이터접근 원리 - 6. 스프링과 문제해결-예외 처리, 반복Spring-Boot/스프링 DB 1편 - 데이터 접근 핵심 원리 2022. 8. 29. 19:13
체크 예외와 인터페이스 - 서비스 계층은 가급적 특정 구현 기술에 의존하지 않고 순수하게 유지하는 것이 좋다. 이렇게 하려면 예외에 대한 의존도 함께 해결해야한다 - 예를 들어서 서비스가 처리할 수 없는 'SQLException' 에 대한 의존을 제거하려면 어떻게 해야할까? - 서비스가 처리할 수 없으므로 리포지토리가 던지는 'SQLException' 체크 예외를 런타임 예외로 전환해서 서비스 계층에 던지자 - 이렇게 하면 서비스 계층이 해당 예외를 무시할 수 있기 때문에, 특정 구현 기술에 의존하는 부분을 제거하고, 서비스 계층을 순수하게 유지할 수 있다. 인터페이스 도입 - 이렇게 인터페이스를 도입하면 'MemberSevice'는 'MemberRepository' 인터페이스에만 의존하면 된다 - 이제..
-
스프링 DB 데이터접근 원리 - 5. 자바 예외 이해Spring-Boot/스프링 DB 1편 - 데이터 접근 핵심 원리 2022. 8. 23. 19:09
예외 계층 * Object : 예외도 객체이다. 모든 객체의 최상위 부모는 ' Object ' 이므로 예외의 최상위 부모도 ' Object ' 이다 * Throwable : 최상위 예외이다. 하위에 ' Exception '과 ' Error ' 가 있다. * Error - 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구 불가능한 시스템 예외이다. 애플리케이션 개발자는 이 예외를 잡으려고 해서는 안된다 - 상위 예외를 ' catch '로 잡으면 그 하위 예외까지 함께 잡는다. 따라서 애플리케이션 로직에서는 ' Throwable ' 예외도 잡으면 안되는데, 앞서 이야기한 ' Error ' 예외도 함께 잡을 수 있기 때문이다. 애플리케이션 로직은 이런 이유로 ' Exception '부터 필요한 ..
-
스프링 DB 데이터접근 원리 - 4. 스프링과 문제해결 - 트랜잭션Spring-Boot/스프링 DB 1편 - 데이터 접근 핵심 원리 2022. 6. 22. 08:31
문제점들 애플리케이션 구조 * 프레젠테이션 계층 * ㆍUI와 관련된 처리 담당 ㆍ웹 요청과 응답 ㆍ사용자 요청을 검증 ㆍ주 사용 기술 : 서블릿과 HTTP 같은 웹 기술, 스프링 MVC * 서비스 계층 * ㆍ비즈니스 로직을 담당 ㆍ주 사용 기술 : 가급적 특정 기술에 의존하지 않고, 순수 자바 코드로 작성 * 데이터 접근 계층 * ㆍ실제 데이터베이스에 접근하는 코드 ㆍ주 사용 기술 : JDBC, JPA, File, Redis, Mongo *순수한 서비스 계층* - 여기서 가장 중요한 곳은 핵심 비즈니스 로직이 들어있는 서비스 계층이다. 시간이 흘러서 UI(웹)와 관련된 부분이 변하고 데이터 저장 기술을 다른 기술로 변경해도, 비즈니스 로직은 최대한 변경없이 유지되어야 한다. - 이렇게 하려면 서비스 계층..
-
스프링 DB 데이터접근 원리 - 3. 트랜잭션 이해Spring-Boot/스프링 DB 1편 - 데이터 접근 핵심 원리 2022. 6. 19. 14:49
트랜잭션 - 개념 이해 - 데이터 베이스에서 트랜잭션은 하나의 거래를 안전하게 처리하도록 보장해주는 것을 뜻한다 - 모든 작업이 성공해서 데이터베이스에 정상 반영하는 것을 커밋( Commit ) 이라 하고, 작업 중 하나라도 실패해서 거래 이전으로 되돌리는 것을 롤백 ( Rollback ) 이라 한다 트랜잭션 ACID - * 원자성 * : 트랜잭션 내에서 실행한 작업들을 마치 하나의 작업인 것처럼 모두 성공하거나 모두 실패해야 한다. - * 일관성 * : 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 한다. ㆍ예를 들어 데이터베이스에서 정한 무결성 제약 조건을 항상 만족해야한다 - * 격리성 * : 동시에 실행되는 트랜잭션들이 서로에게 영향을 미치지 않도록 격리한다. ㆍ예를 들어 동시에 같은 ..
-
스프링 DB 데이터접근 원리 - 2. 커넥션풀과 데이터소스 이해Spring-Boot/스프링 DB 1편 - 데이터 접근 핵심 원리 2022. 6. 18. 13:07
커넥션 풀 이해 * 데이터베이스 커넥션을 매번 획득 * - 데이터베이스 커넥션을 획득할 떄는 다음과 같은 복잡한 과정을 거친다. 1. 애플리케이션 로직은 DB 드라이버를 통해 커넥션을 조회한다 2. DB드라이버는 DB와 TCP/IP 커넥션을 연결한다. 물론 이 과정에 3 way handshake 같은 TCP/IP 연결을 위한 네크워크 동작이 발생한다 3. DB드라이버는 TCP/IP 커넥션이 연결되면 ID,PW와 기타 부가정보를 DB에 전달한다 4. DB는 ID, PW를 통해 내부 인증을 완료하고, 내부에 DB세션을 생성ㅎ나다 5. DB는 커넥션 생성이 완료되었다는 응답을 보낸다 6. DB 드라이버는 커넥션 객체를 생성해서 클라이언트에 반환한다. - 이렇게 커넥션을 새로 만드는 것은 과정도 복잡하고 시간도..
-
스프링 DB 데이터접근 원리 - 1. JDBC 이해Spring-Boot/스프링 DB 1편 - 데이터 접근 핵심 원리 2022. 6. 18. 09:38
H2 데이터베이스 설정 - H2 데이터베이스는 개발이나 테스트 용도로 사용하기 좋은 가볍고 편리한 DB이다. - 그리고 SQL을 실행할 수 있는 웹화면을 제공한다. - h2 데이터베이스 버전은 스프링 부트 버전에 맞춘다 - MAC, 리눅스 사용자 ㆍ권한 주기 : ' chmod 755 h2.sh ' ㆍ실행 : ' ./h2.sh ' - 원도우 사용자 ㆍ실행 : ' h2.bat ' - 데이터베이스 파일 생성 방법 ㆍJDBC URL ㆍ' jdbc:h2:~/test ' ( 최초 한번 ) ㆍ' ~/test.mv.db ' 파일 생성 확인 ㆍ이후부터는 ' jdbc:h2:tcp://localhost/~/test ' 접속 JDBC 이해 * 애플리케이션 서버와 DB - 일반적인 사용법 * 1. 커넥션 연결 : 주로 TCP/..