LUNA's Archive

고정 헤더 영역

글 제목

메뉴 레이어

LUNA's Archive

메뉴 리스트

  • 홈
  • 태그
  • 방명록
  • 분류 전체보기 (88)
    • C (2)
    • C++ (1)
    • Data Structure & Algorithm (9)
    • Computer Vision (0)
    • RDBMS (19)
    • Spring Framework (7)
    • Network (8)
    • Spring Webflux (2)
    • Java (16)
    • 대규모 설계 기초 (12)
    • Spring Data JDBC (5)
    • Spring Security (5)
    • JPA (0)
    • Spring Batch (0)
    • Infra (2)

검색 레이어

LUNA's Archive

검색 영역

컨텐츠 검색

Spring Data JDBC

  • 트랜잭션 이해

    2025.01.05 by Wanderer Kim

  • DataSource 이해

    2024.11.30 by Wanderer Kim

  • 커넥션 풀

    2024.11.17 by Wanderer Kim

  • Spring Transaction 사용 시 주의할 점

    2021.09.25 by Wanderer Kim

  • 선언적 Transactional

    2021.09.19 by Wanderer Kim

트랜잭션 이해

트랜잭션이란?트랜잭션을 이름 그대로 번역하면 거래라는 뜻이다. 다시 말하면 데이터베이스에서 하나의 거래를 안전하게 처리하도록 보장해주는 것을 뜻한다. 이를 위해 데이터베이스는 모든 작업이 성공해서 데이터베이스에 정상 반영(commit)을 하던가, 작업 중 하나라도 실패해서 이전으로 되돌리는 것(rollback)을 지원해준다.트랜잭션 ACIDACID는 원자성, 일관성, 격리성, 지속성을 나타내는 단어이다.원자성 : 트랜잭션 내에서 실행한 작업들은 하나의 작업인 것처럼 모두 성공하거나 실패해야 한다.일관성 : 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 한다. 예를 들어 데이터베이스에서 정한 무결성 제약 조건을 항상 만족해야 한다.격리성 : 동시에 실행되는 트랜잭션들이 서로에게 영향을 미치지 않..

Spring Data JDBC 2025. 1. 5. 12:58

DataSource 이해

커넥션을 얻는 방법은 JDBC DriverManager를 직접 사용하거나, 커넥션 풀을 사용하는 등 다양한 방법이 존재한다.만약 DriverManager를 통해서 커넥션을 획득하다가, 커넥션 풀을 사용하는 방법으로 변경하려면 애플리케이션 로직에서 커넥션을 획득하는 코드를 DriverManager에서 HikariCP같은 커넥션 풀을 사용하도록 변경해야 한다.  자바에서는 이런 문제를 해겨하기 위해 javax.sql.DataSource라는 인터페이스를 제공한다. DataSource는 커넥션을 획득하는 방법을 추상화하는 인터페이스이다.이 인터페이스의 핵심 기능은 커넥션 조회 하나이다. 애플리케이션 로직에서 DataSource 인터페이스만 의존하게 만들면, DriverManager를 사용하다가 커넥션 풀을 사용..

Spring Data JDBC 2024. 11. 30. 22:00

커넥션 풀

데이터베이스 커넥션 획득 과정의 문제점데이터베이스 커넥션을 획득할 때는 아래와 같은 복잡한 과정을 거친다.1. 애플리케이션 로직은 DB 드라이버를 통해 커넥션을 조회한다.2. DB 드라이버는 DB와 TCP/IP 커넥션을 연결한다. 이 과정에서 TCP/IP/ 연결을 위한 네트워크 동작이 발생한다.3. DB 드라이버는 TCP/IP 커넥션이 연결되면 ID, PW와 기타 부가정보를 DB에 전달한다.4. DB는 ID,PW를 통해 내부 인등을 완료하고, 내부에 DB 세션을 생성한다.5. DB는 커넥션 생성이 완료되었다는 응답을 보낸다.6. DB 드라이버는 커넥션 객체를 생성해서 클라이언트에 반환한다. 이렇게 커넥션을 새로 만드는 것은 과정도 복잡하고 시간도 많이 소모된다.DB는 물론이고 애플리케이션 서버에서도 TC..

Spring Data JDBC 2024. 11. 17. 19:01

Spring Transaction 사용 시 주의할 점

트랜잭션 안에서 트랜잭션을 새로 여는 경우 PROPAGATION_REQUIRED를 사용할 때 주의 사항 Spring이 기본값으로 사용하는 propagation behavior는 PROPAGATION_REQUIRED 이다. 이 옵션을 사용하면 어떤 트랜잭션 안에서 TransactionTemplate 을 통해 트랜잭션을 열려고 시도할 경우, AbstractPlatformTransactionManager.getTransact 는 이미 열려있는 기존 트랜잭션을 반환 한다. 이로 인해 발생하는 눈여겨 볼만한 특징에는 두 가지가 있다. 첫 번째 포인트는 안쪽 트랜잭션이 롤백되면 바깥쪽 트랜잭션도 롤백된다는 것이다. 이는 코드 상으로 분리되어 보이는 두 트랜잭셔닝 사실 한 트랜잭션 안에서 실행되고 있기 때문이다. t..

Spring Data JDBC 2021. 9. 25. 20:39

선언적 Transactional

스트링에서 트랜잭션 처리 방법스트링에서는 트랜잭션 처리를 @Transactional을 사용하는 방법을 제공한다. 이를 선언적 트랜잭션이라 부른다.스프링에서는 @Transactional을 사용하면 해당 어노테이션이 명시된 모든 메소드들에 대해 내부적으로 AOP를 사용하여 트랜잭션 처리 코드가 전/후로 수행된다.Spring에서 Transaction 관리를 위해 사용되는 AOP 프록시 매커니즘JDK Dynamic Proxy인터페이스에 대한 proxy만을 지원하며, 클래스에 대한 proxy를 지원할 수 없다.CGLIB ProxyRuntime시에 target 메소드가 호출될 때 해당 메소드의 advice 적용 여부를 결정한다. 그러나 메소드는 처음 호출 되었을때 동적으로 bytecode를 생성하여 이후 호출에서는..

Spring Data JDBC 2021. 9. 19. 19:40

추가 정보

인기글

최신글

페이징

이전
1
다음
TISTORY
LUNA's Archive © Magazine Lab
페이스북 트위터 인스타그램 유투브 메일

티스토리툴바