반응형
# 목적
- Spring의 데이터베이스 액세스에 대한 이해
📌 Spring DB Access의 특징
1. DataSource를 이용한 데이터베이스 연결 제공
- 다양한 방식의 데이터베이스 연결을 제공하고, 이에 대한 추상화 계층을 제공함으로써 업무로직과 데이터베이스 연결방식 간의 종속성을 배제한다.
2. 다양한 데이터베이스 액세스 프레임워크와의 연동 지원
- mybatis, JPA, hibernate 등
3. 오류에 대한 일괄된 예외 제공
- Spring은 DataAccessException 클래스를 제공한다.
- DataAccessException은 RuntimeException을 상속받은 Unchecked 예외다.
- Spring은 데이터베이스별 오류코드를 조사해서 오류 코드별로 일관된 예외를 발생시킨다.
- 오류 코드별 예외는 DataAccessException 클래스의 하위 클래스이며, 좀더 구체적인 오류코드를 보여준다.
* try~catch 작성 불필요
4. 트랙잭션 처리를 지원하는 트랜잭션 매니저 제공
- 다양한 방식의 데이터베이스 액세스 기술에 대한 트랜잭션 처리를 제공하고, 이에 대한 추상화 계층을 제공함으로써 업무로직과 트랜잭션 처리 방식 간의 종속성을 배제한다.
- PlatformTransactionManager를 이용해서 트랜잭션 처리를 추상화했다.
PlatformTransactionManager 인터페이스에는 트랜잭션 처리와 관련된 추상화된 메소드가 정의되어 있고, 각각의 데이터베이스 액세스 기술에 맞는 다양한 PlatformTransactionManager 인터페이스 구현체가 존재한다.
5. 선언적 트랜잭션 처리 지원
- 프로그램 코드 작성 없이 선언적 방법으로 트랜잭션 처리를 지원한다.
- 선언적 방법
- 트랜잭션 처리가 필요한 곳에 @Transactional 어노테이션 붙이기
@Transactional public class OrderService { }
- aop 설정을 활용한 선언적 트랜잭션 처리
< 해당 글은 velog에서 이전하며 옮겨온 글로, 가독성이 좋지 않을 수 있는 점 양해 부탁드립니다. >
🔗 velog 버전 보기 : https://velog.io/@ryuneng2/Spring-데이터베이스-액세스
'BackEnd > Spring' 카테고리의 다른 글
[Spring] Spring Boot란? (2) | 2025.01.16 |
---|---|
[Spring] JdbcTemplate의 RowMapper 구현법 - 익명객체, 람다식 (0) | 2025.01.16 |
[Spring] Spring을 통한 자동 의존성 주입(코드 작성 순서) (0) | 2025.01.16 |
[Spring] Maven 빌드 도구 (0) | 2025.01.16 |
[Spring] Spring Container(스프링 컨테이너) (0) | 2025.01.16 |