@Transactional & Spring Framework

cook_pasta·2024년 9월 11일

SpringBoot

목록 보기
3/5

@Transactional 어노테이션

Spring Framework에서 트랜잭션 관리 기능을 제공합니다.

  • 트랜잭션
    데이터베이스 작업의 일련의 연산을 하나의 단위로 묶어서 처리하는 것을 말합니다. 트랜잭션 내의 작업들이 모두 성공하거나 모두 실패해야만 데이터의 일관성을 유지할 수 있습니다.

트랜잭션의 시작과 종료:

  • @Transactional 어노테이션이 붙은 메서드가 호출될 때, Spring은 자동으로 트랜잭션을 시작합니다.
  • 메서드가 정상적으로 종료되면, Spring은 트랜잭션을 커밋합니다.
  • 메서드 내에서 예외가 발생하면, Spring은 트랜잭션을 롤백하여 모든 변경 사항을 취소합니다.

격리:

  • 트랜잭션의 격리 수준은 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않도록 보장합니다.

롤백:

  • 트랜잭션 내에서 예외가 발생하면 트랜잭션을 롤백하여, 모든 데이터베이스 변경을 취소합니다. 이는 데이터베이스의 일관성을 유지하는 데 중요합니다.

읽기 전용(Read-Only):

  • @Transactional(readOnly = true)로 설정하면, 트랜잭션 내에서 데이터 변경 작업이 없음을 보장합니다. 이는 성능 최적화에 도움이 됩니다.

트랜잭션 관리의 필요성

트랜잭션 관리가 필요한 이유는 데이터베이스의 무결성과 일관성을 보장하기 위해서입니다. 여러 데이터베이스 작업이 하나의 트랜잭션 내에서 성공적으로 수행되어야만 데이터의 상태가 안정적이고 일관성 있게 유지될 수 있습니다.

이러한 이유로, @Transactional을 적절히 사용하면 복잡한 데이터베이스 작업에서 오류 발생 시 데이터의 정합성을 유지할 수 있습니다.


Spring Framework란?

Spring Framework는 자바 기반의 오픈 소스 프레임워크로, 엔터프라이즈(대규모의 조직이나 기업) 애플리케이션의 개발을 지원합니다. 2002년에 처음 발표된 이 프레임워크는 자바 개발자들 사이에서 매우 인기가 높으며, 다양한 기능과 모듈을 제공합니다.

<주요 특징>
1. 의존성 주입 (Dependency Injection, DI):

  • 객체 간의 의존성을 설정하는 방법을 제공하여 코드의 결합도를 낮추고 테스트와 유지보수를 용이하게 합니다. 스프링의 DI는 객체의 생성과 관리, 의존성 해결을 자동으로 처리합니다.

결합도(Coupling)란?

결합도는 소프트웨어 설계에서 모듈이나 컴포넌트 간의 의존성 정도를 나타내는 개념입니다.

  • 유지보수성: 결합도가 낮으면 모듈 간의 의존성이 적어지므로, 코드의 유지보수나 수정이 용이해집니다.
  • 재사용성: 결합도가 낮은 모듈은 다른 시스템이나 애플리케이션에서 재사용하기 쉬워집니다.
  • 테스트 용이성: 독립적인 모듈은 개별적으로 테스트하기 쉬워, 전체 시스템의 품질을 높일 수 있습니다.

2.관점 지향 프로그래밍 (Aspect-Oriented Programming, AOP):

  • 비즈니스 로직과 공통적인 관심사를 분리할 수 있도록 돕습니다. 예를 들어, 로깅, 트랜잭션 관리, 보안 등을 비즈니스 로직과 분리하여 처리할 수 있습니다.

3.트랜잭션 관리

  • 데이터베이스 트랜잭션을 일관되게 처리할 수 있는 기능을 제공하며, 선언적 트랜잭션 관리를 통해 복잡한 트랜잭션 관리를 단순화합니다.

4.MVC 웹 프레임워크:

  • 웹 애플리케이션의 개발을 돕는 MVC (Model-View-Controller) 아키텍처를 제공합니다. 이를 통해 애플리케이션의 구조를 깔끔하게 유지할 수 있습니다.

5.모듈화:

  • 스프링은 다양한 모듈로 구성되어 있어 필요에 따라 원하는 기능만 선택적으로 사용할 수 있습니다. 주요 모듈로는 Spring Core, Spring Data, Spring Security, Spring Boot 등이 있습니다.

6.유연한 설정:

  • XML, 애너테이션, 자바 설정 클래스를 통해 스프링을 구성할 수 있습니다. 이는 다양한 환경에서 유연하게 적용할 수 있게 합니다.

프레임워크(Framework)란?

소프트웨어 개발에서 특정 문제를 해결하거나 특정 기능을 구현하기 위해 제공되는 구조적 틀입니다. 개발자가 애플리케이션을 구축할 때, 기본적인 구조와 일반적인 기능을 제공하여 개발 과정을 단순화하고 표준화합니다.

<프레임워크의 주요 특징>

  • 구조 제공:
    프레임워크는 소프트웨어 개발에 필요한 구조적 틀을 제공합니다. 이를 통해 개발자는 일관된 방식으로 애플리케이션을 설계하고 구현할 수 있습니다.

  • 재사용성:
    일반적인 기능이나 패턴이 이미 구현되어 있어, 개발자는 이를 재사용할 수 있습니다. 이로 인해 중복 작업을 줄이고 개발 효율성을 높일 수 있습니다.

  • 표준화:
    프레임워크는 개발 표준을 제공합니다. 이를 통해 코드의 일관성을 유지하고, 팀 간의 협업을 원활하게 할 수 있습니다.

  • 유연성:
    프레임워크는 다양한 플러그인이나 확장 모듈을 통해 기능을 추가하거나 수정할 수 있는 유연성을 제공합니다.
    제어의 역전(Inversion of Control, IoC):

프레임워크는 개발자가 애플리케이션의 흐름을 직접 제어하지 않고, 프레임워크가 애플리케이션의 흐름을 관리합니다. 이를 통해 코드의 결합도를 낮추고, 더 쉽게 유지보수할 수 있습니다.

<프레임워크의 종류>
프레임워크는 다양한 용도에 맞게 설계됩니다. 몇 가지 예시로는:

  • 웹 프레임워크:
    웹 애플리케이션 개발을 위한 프레임워크입니다. 예를 들어, Spring (Java), Django (Python), Ruby on Rails (Ruby) 등이 있습니다.

  • 모바일 프레임워크:
    모바일 애플리케이션 개발을 위한 프레임워크입니다. 예를 들어, React Native (JavaScript), Flutter (Dart) 등이 있습니다.

0개의 댓글