반응형
제육's 휘발성 코딩
반응형
article thumbnail
[Database2] 데이터 접근 기술 - MyBatis
🔷 Spring/Database 2022. 6. 13. 21:19

MyBatis Mybatis는 JdbcTemplate보다 더 많은 기능을 제공하는 SQL Mapper이다. 기본적으로 JdbcTemplate이 제공하는 기능을 대부분 제공하며, XML과 동적 쿼리를 매우 편리하게 작성할 수 있다는 장점이 있다. MyBatis vs JdbcTemplate JdbcTemplate과 MyBatis의 코드 차이를 알아보자. JdbcTemplate String sql = "update item " + "set item_name=:itemName, price=:price, quantity=:quantity " + "where id=:id"; MyBatis -SQL update item set item_name=#{itemName}, price=#{price}, quantity=#{..

article thumbnail
[Database2] 데이터 접근 기술 - 테스트
🔷 Spring/Database 2022. 6. 13. 19:26

데이터베이스 연동 테스트 데이터 접근 기술은 실제 데이터베이스에 접근해서 데이터를 잘 저장하고 조회할 수 있는지 확인하는 것이 필요하다. 테스트 단에서 데이터베이스 접근을 위한 별도의 설정을 위해 db2test 라는 이름으로 새로운 스키마를 생성하자. Item 테이블 생성 drop table if exists item CASCADE; create table item ( id bigint generated by default as identity, item_name varchar(10), price integer, quantity integer, primary key (id) ); 새로운 테이블을 사용하기 때문에 다시 Item 테이블을 생성하자. application.properties (test) spr..

article thumbnail
[Database2] 데이터 접근 기술 - JdbcTemplate
🔷 Spring/Database 2022. 6. 13. 17:06

JdbcTemplate JDBC를 편리하게 사용할 수 있도록 도와주는 JdbcTemplate에 대해서 알아보자. 장점 JdbcTemplate은 spring-jdbc 라이브러리에 포함되어 있으며, 별도의 복잡한 설정 없이 바로 사용할 수 있다. 템플릿 콜백 패턴을 사용해서 JDBC를 직접 사용할 때 발생하는 대부분의 반복 작업을 대신 처리해준다. 커넥션 획득 및 종료 , statement 준비 및 실행, 결과 반복 루프 작업, 커넥션 동기화, 스프링 예외 변환 등 단점 동적 SQL을 해결하기 어렵다. JdbcTemplate 설정 build.gradle //JdbcTemplate 추가 implementation 'org.springframework.boot:spring-boot-starter-jdbc' //..

article thumbnail
[Database2] 데이터 접근 기술 - 프로젝트 구조
🔷 Spring/Database 2022. 6. 13. 15:09

프로젝트 구조 다음과 같이 상품 목록을 조회하는 프로젝트 구조를 알아보자. build.gradle plugins { id 'org.springframework.boot' version '2.6.5' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.spr..

article thumbnail
[Database I] - 스프링 예외 처리, JdbcTemplate
🔷 Spring/Database 2022. 6. 4. 13:49

체크 예외와 인터페이스 서비스 계층에서 처리할 수 없는 예외의 의존을 제거해서 서비스 계층을 순수하게 유지할 수 있다. 먼저, 인터페이스를 도입해서 구현체를 쉽게 변경할 수 있도록 만들어보자. 인터페이스 도입 그림 이렇게 인터페이스를 도입하면 서비스는 인터페이스에만 의존하면 된다. 이 때 체크 예외를 사용하는 경우 인터페이스에서도 예외처리를 해결해야한다. 체크 예외 코드에 인터페이스 도입 시 문제점 public interface MemberRepositoryEx { Member save(Member member) throws SQLException; Member findById(String memberId) throws SQLException; void update(String memberId, int ..

article thumbnail
[Database I] - Java 예외 (Checked , Unchecked Exception)
🔷 Spring/Database 2022. 6. 3. 21:20

자바 예외 이해 예외 계층 스프링이 제공하는 예외 추상화를 이해하기 위해선 자바 기본 예외에 대한 이해가 필요하다. 실무에 필요한 체크 예외와 언체크 예외에 대해 알아보자. Throwable 은 최상위 예외로 하위에 Exception 과 Error 가 있다. Error 는 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구 불가능한 시스템 예외이다. 애플리케이션 개발자는 이 예외를 잡으려고 해서는 안된다. 상위 예외를 catch로 잡으면 그 하위 예외까지 잡기 때문에 애플리케이션 로직은 최상위인 Exception 까지만 잡는 것이 올바르다. 참고로 Error 도 언체크 예외이다. Exception : 체크 예외 애플리케이션 로직에서 사용할 수 있는 실질적인 최상위 예외이다. Exception..

article thumbnail
[Database I] - 스프링 트랜잭션 이해 (@Transaction)
🔷 Spring/Database 2022. 6. 3. 03:10

스프링과 문제 해결 순수한 서비스 계층 서비스 계층은 특정 기술에 종속적이지 않게 개발해야 한다. 계층을 나눈 이유도 서비스 계층을 최대한 순수하게 유지하기 위한 목적이 크다. 즉, 한 마디로 JDBC를 쓰다 JPA로 변경, Http API를 쓰다가 GRPC로 변경 등에 대한 과정으로 인해 서비스 계층에 수정이 있으면 안된다. 스프링은 트랜잭션 문제 (JDBC에 의존하는 문제, 트랜잭션 동기화, 반복 문제), 예외 누수 등의 문제를 해결할 수 있는 다양한 방법을 제공한다. 트랜잭션 추상화 트랜잭션은 원자적 단위의 비즈니스 로직을 처리하기 위해 사용한다. JDBC, JPA 등 구현 기술마다 트랜잭션을 사용하는 방법이 다르다. (JDBC : setAutoCommit(false), JPA : transacti..

article thumbnail
[Database I] - 트랜잭션 이해
🔷 Spring/Database 2022. 6. 2. 23:27

트랜잭션 개념 이해 트랜잭션은 이름 그대로 번역하면 거래라는 뜻이다. 즉, 데이터베이스에서 트랜잭션은 하나의 거래를 안전하게 처리하도록 보장해주는 것을 의미한다. 데이터를 저장할 때 파일 저장이 아닌, 데이터베이스에 저장하는 이유 중 대표적인 이유는 트랜잭션을 지원하기 때문이다. 하나의 트랜잭션이 모두 성공해서 데이터베이스에 반영되는 것을 커밋이라하고, 작업 중 하나라도 실패해서 거래 이전으로 되돌리는 것을 롤백이라 한다. 트랜잭션 ACID 트랜잭션은 원자성(Atomicity), 일관성 (Consistency), 격리성(Isolation), 지속성(Durability)를 보장해야 한다. 원자성 : 트랙잭션 내에서 실행한 작업들은 마치 하나의 작업인 것처럼 모두 성공하거나 실패해야 한다. 일관성 : 모든 ..

반응형
반응형