spring/spring db1

spring/spring db1

6. 스프링과 문제 해결 - 예외 처리, 반복

1. 체크 예외와 인터페이스 서비스 계층이 예외에 대한 의존을 해결 하기 위해서 throws SQLException도 제거 필요 서비스가 처리할 수 없는 repository에서 던지는 SQLException 체크 예외를 런타임 예외로 전환해서 서비스 계층에 던진다. 인터페이스를 도입하면 인터페이스에만 의존하면 된다. 구현 기술을 변경하고 싶으면 DI를 사용해서 MemberService 코드의 변경 없이 구현 기술을 변경할 수 있다. memberRepository interface package hello.jdbc.repository; import hello.jdbc.domain.Member; public interface MemberRepository { Member save(Member member);..

spring/spring db1

5. 자바 예외 이해

WAS에서 예외를 처리하지 못하는 경우 : main() 과 달리 사용자에게 개발자가 지정한, 오류 페이지를 보여준다. 1. 체크 예외 활용 2가지 언체크(런타임 예외를 사용) 비즈니스 로직상 의도적으로 던지는 예외에만 사용 계좌 이체 실패 예외 결제시 포인트 부족 예외 로그인 ID, PW 불일치 예외 현실 throws 예외의 경우 service logic에서 처리하지 못하는 것이 대부분이다. 그렇지만 throws를 계속 날려줘야하므로 불편하고 의존성 문제가 발생한다. - rumtime예외를 권장하는 이유 해당 예외들은 보통 서블릿의 오류 페이지나, 스프링 MVC가 제공하는 controllerAdive에서 예외를 공통으로 처리 한다. 해결 불가한 공통 예외는 별도의 오류 로그를 남기고, 개발자가 오류를 빨..

spring/spring db1

4. 스프링과 문제해결 - 트랜잭션

1. 문제점 application의 구조 프레젠테이션 계층 UI와 관련된 처리 담당 웹 요청과 응답 사용자 요청을 검증 spring MVC, web Servlet 기술 서비스 계층 비즈니스 로직 담당 주 사용 기술 : 가급적 특정 기술에 의존하지 않고, 순수 자바 코드로 작성 데이터 접근 계층 실제 db에 접근하는 code 주 사용 기술 : JDBC, JPA, File, Redis, Mongo ... 1.1. 서비스 계층 가장 중요한 계층 UI 와 db 저장 기술들은 다른 기술로 변경 가능성이 높지만 비즈니스 로직은 최대한 변경없이 유지 되어야한다. 서비스 계층은 특정 기술에 종속적이지 않게 개발되어야한다. 서비스 계층을 최대한 순수하게 유지하기 위한 목적이 크다 service 계층은 가급적busines..

spring/spring db1

3. 트랜잭션 이해

1. 트랜잭션 - 개념 이해 transaction Control (tx) data 저장시 file이 아닌 db에 저장하는 이유 db는 transaction이라는 개념을 지원하기 때문 transaction 거래 예시 : a와 b의 돈거래 : a 잔고 감소, b 잔고 증가 핵심 2가지 작업이 합쳐져서 하나의 작업처럼 동작 모든 작업이 성공해서 db에 정상 반영하는 것 : commit 작업 중 1개라도 실패해서 거래 이전으로 되돌리는 것 : rollback 2. 트랜잭션 ACID 원자성(atomictiy) : 여러작업이 하나의 작업인 것처럼 모두 성공 하거나 모두 실패 일관성(consistency) : db 상태를 유지 - 무결성 제약 조건을 만족 격리성(isolation) : 동시에 같은 데이터를 수정하지 ..

spring/spring db1

2. connectionPool 과 datasource 이해

1. connectionPool의 이해 connection을 새로 만드는 것은 과정이 복잡하고 시간도 많이 소모된다. - app과 db의 connection 맺는 과정에서 3 way handshake가 수행되기 때문 문제점 DB , app server에서도 tcp/ip 컨넥션을 새로 생성하기 위한 리소스를 매번 사용 고객이 app을 사용할 때, SQL을 실행하는 시간, connection을 새로 만드는 시간이 추가되기 때문에 결과적으로 응답 속도에 영향을 준다. 해결방안 connection을 미리 생성해두고 사용하는 connection pool 방법 이용 connection pool app이 시작되는 시점에 connection pool은 필요한 만큼 connection을 미리 확보해서 pool에 보관한다..

spring/spring db1

1. JDBC의 이해

spring boot db dependency JDBC API H2 Database Lombok test code에서 lombok 사용 시, dependency 추가 test code에서 @Slfj4 사용 하기 위함 testComileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' 1. H2 db 설정 개발, 테스트 용도로 사용하는 가벼운 db sql 작성 화면 제공 설치 다운로드 및 설치 : https://www.h2database.com h2 다운로드 버전확인: https://www.h2database.com/html/download-archive.html h2 데이터베이스 버전은 스프링 부트 버전에 ..

wooweee
'spring/spring db1' 카테고리의 글 목록