[Spring] 21. PSA(서비스 추상화)란 무엇인가요?
zbqmgldjfh opened this issue · 1 comments
PSA란 무언인가?
Spring의 Triangle의 3요소 중 하나인 PSA에 대하여 면접용으로 간략하게 설명합니다.
키워드
Spring
, Spring Triangle
PSA(서비스 추상화)
Spring을 사용하면 서비스 추상화를 통해 특정 환경이나 서버, 기술에 종속되지 않으며 유연한 애플리케이션을 개발할 수 있다.
스프링에서는 추상화 계층을 통해 구체적인 기술과 환경에 종속되지 않도록 한다.
즉, 추상화 계층을 사용해 어떤 기술을 내부에 숨기고 개발자에게 편의성을 제공하는 것 이다.
대표적인 예로 Spring Web MVC 라는 추상화 계층과 Transaction이 있다.
1. Web MVC
Spring에서 Servlet기반의 Application을 만들고 있음에도 불구하고, Servlet 코드는 전혀 보이지 않는다.
단순하게 Controller만 봐도 @GetMapping
, @PostMapping
등의 에노테이션을 통해 편하게 코드를 작성한다.
그 기반에서는 사실 Servlet기반으로 코드가 구현되는 것 이다.
기존의 Servlet을 개발할때 처럼 HttpServlet을 상속받고 doGet(), doPost()를 구현하는 등의 작업을 하지 않아도 되는 것 입니다.
즉, Service Abstraction(서비스 추상화)의 목적 중 하나가 이러한 편의성을 제공하는 것입니다.
2. Transaction
원래는 JDBC를 사용해서 Transaction을 걸때는 다음과 같이 auto commit을 꺼줘야 합니다.
dbConnection.setAutoCommit(false);
~~
dbConnection.commit()
이후 명시적으로 commit을 호출하면서 Transaction처리를 할 수 있게되죠.
즉, Low level로 트랜잭션 처리를 하려면 명시적으로 setAutoCommit(false)와 commit(), rollback()을 호출해줘야만 합니다.
하지만 Spring에서는 @transactional 에노테이션을 메서드에 추가하면, 알아서 Transaction처리가 되죠!
PSA를 통해 내부적으로 복잡함을 감춘것입니다!
References
https://blogshine.tistory.com/480