MyBatis 1

Spring/DB, Cache 연동 2022. 8. 23. 01:35

MyBatis는 JdbcTemplate보다 더 많은 기능을 제공하는 SQL Mapper이다. 가장 큰 장점 SQL을 XML에 편리하게 작성할 수 있다. 동적 쿼리를 편리하게 작성할 수 있다. MyBatis 공식 사이트 MyBatis – 마이바티스 3 | 소개 MyBatis – 마이바티스 3 | 소개 마이바티스는 무엇인가? 마이바티스는 개발자가 지정한 SQL, 저장프로시저 그리고 몇가지 고급 매핑을 지원하는 퍼시스턴스 프레임워크이다. 마이바티스는 JDBC로 처리하는 상당부분의 코드와 mybatis.org MyBatis 스프링 공식 메뉴얼 https://mybatis.org/spring/ko/index.html mybatis-spring – 소개 MyBatis-Spring 은 무엇일까? 마이바티스 스프링 연..

JdbcTemplate 1

Spring/DB, Cache 연동 2022. 8. 9. 23:22

스프링이 제공하는 JdbcTemplate은 JDBC를 편리하게 사용할 수 있도록 도와준다 JdbcTemplate 장점 1. spring-jdbc 라이브러리에 포함. (JDBC 기본 라이브러리) 2. 템플릿 콜백 패턴으로 대부분의 반복 작업을 대신 처리 해준다. - 커넥션 조회, 커넥션 동기화 - preparedStatement 생성 및 파라미터 바인딩 - 쿼리 실행 - 결과 바인딩 - 예외 발생 시, 스프링 예외 변환기 실행 - 리소스(커넥션, statement, resultset) 종료 JdbcTemplate 단점 동적 SQL 해결 어려움 (-> MyBatis를 사용하자) JdbcTemplate 순서 기반 파라미터 바인딩을 지원한다. NamedParameterJdbcTemplate 이름 기반 파라미터 ..

JDBC 10

Spring/DB, Cache 연동 2022. 7. 16. 01:58

지금까지 내용으로는.. service 계층의 순수함이 유지 하게 되었고.. repository 계층에서는.. JDBC를 사용하기에.. 다른 메서드 임에도.. 동일한 반복코드가 많다.. 이를 해결해보자. 반복코드 1. 커넥션 조회, 커넥션 동기화 2. preparedStatement 생성 및 파라미터 바인딩 3. 쿼리 실행 4. 결과 바인딩 5. 예외 발생 시, 스프링 예외 변환기 실행 6. 리소스 종료 템플릿 콜백 패턴으로 해결 JdbcTemplate JdbcTemplate을 사용하면.. 위 반복코드가 대부분 사라지며, 커넥션 동기화, 스프링 예외 변환기도 자동으로 실행 해준다. 기본적으로 SQL Mapper 방식이다.

JDBC 9

Spring/DB, Cache 연동 2022. 7. 16. 01:51

직전 포스팅에서 repository layer에 특정 DB에 종속적인 코드가 들어가 버렸다. e.getErrorCode() == 23505 해당 코드는 H2 한정이다.. 지금까지 특정 DB에 따른 코드 분리는 필요 없었지만.. DataSource가 라이브러리에 등록된 DB 드라이버, DB접근 URL 및 부가정보(이름, 비밀번호 등)로 알아서 커넥션 획득해줬기 때문.. 예외처리 때문에 코드 분리를 하거나.. 코드가 지저분해질 위기에 처했다. 해결.. 스프링은 이미 모든 DB에러 상황에 맞는 예외를 만들어 놨으며.. -> 스프링 데이터 접근 예외(DataAccessException) 계층 DB에 따른 error code들을 매핑하여, 동일한 원인일 경우 일관된 예외로 변환 가능하다. -> 스프링 예외 변환기..

Article Thumbnail
JDBC 8

Spring/DB, Cache 연동 2022. 7. 16. 00:41

복구가 가능한 예외는 어떻게 처리하면 좋을까.. 예를 들어서.. 키값이 중복이라 DB에서 예외를 던지는 경우를 생각해보자.. 개발자는 이를 애플리케이션 로직상 해결할 수 있다. (기존 키값에서 +1 정도로 해결하는 사양일 경우) DB에서는 SQLException을 발생시키고 던진다. 개발자는 중복 키에 의한 예외인 것을.. e.getErrorCode() 로 알 수 있다. 중복 키 처리에 대한 로직은 서비스 계층에 들어가야 하는데... 이를 처리하는 조건문을 위해 서비스 계층에 SQLException을 던지면 .. 또.. OCP 위반이다. 아래 방법을 참고 하자. repository에서 해결해보자.. repository 구현체 코드 중 일부이다. DB에서 발생된 SQLException 예외 중, 중복 ke..

Article Thumbnail
JDBC 7

Spring/DB, Cache 연동 2022. 7. 16. 00:11

https://starryeye.tistory.com/52 [Java 정리] 예외 Java의 예외에 대해 알아보자. java의 예외도 객체이다. 따라서 상속 구조를 가지며, 계층이 존재한다. Java 예외 계층 Throwable 최상위 예외이며 Object를 상속 받고있다. 개발자는 Throwable 예외를 catch starryeye.tistory.com 위 포스팅을 읽고 시작하자.. 지금까지의 포스팅에서 repository 구현체 layer 에서 사용할 DB를 연동하고.. 의존성을 가지는 것으로 볼 수 있다. 다음 두가지 문제에 대해 포스팅 하겠다. 1. 복구 불가능한 예외 2. 의존 관계에 대한 문제 복구 불가능한 예외 DB에서 발생하는 대부분의 예외는 처리가 불가능하다. SQLException을 ..

Article Thumbnail