본문 바로가기
Spring

[Spring] PSA - 일관성 있는 서비스 추상화

by jaee_ 2021. 10. 4.
본 글은 📚 스프링 입문을 위한 자바 객체지향의 원리와 이해 를 읽고 정리한 내용입니다.

이 전글에서는 스프링 프레임 워크의 DI와 AOP에 대해 살펴봤다. 이제 마지막으로 살펴볼 스프링 삼각형의 요소는 PSA(Portable Service Abstraction). 즉, 일관성 있는 서비스 추상화다. 

 

서비스 추상화의 예로 JDBC를 들 수 있다. JDBC라고 하는 표준 스펙이 있기에 오라클이든, MySQL이든 Connection, Statement, ResultSet을 이용해 공통된 방식으로 코드를 작성할 수 있다. 데이터베이스 종류에 관계없이 같은 방식으로 제어할 수 있는 이유는 디자인 패턴에서 설명했던 어댑터 패턴을 활용했기 때문이다. 이처럼 어댑터 패턴을 적용해 같은 일을 하는 다수의 기술을 공통의 인터페이스로 제어할 수 있게 한 것은 서비스 추상화라고 한다.

 

스프링 프레임워크에서는 서비스 추상화를 위해다양한 어댑터를 제공한다. 예를들어, OXM(Object XML Mapping : 객체와 XML 매핑) 기술만 하더라도 다양한 기술이 있는데 스프링은 제각각인 API를 위한 어댑터를 제공함으로써 실제로 어떤 OXM기술을 쓰든 일관된 방식으로 코드를 작성할 수 있게 지원한다. 또한 다른 OXM기술로 변경할 때 큰 변화없이 세부 기술을 교체할 수 있도록 해준다. 

 

이처럼 서비스 추상화를 해주면서 그것도 일관성있는 방식을 제공한다고 해서 이를 PSA(일관성 있는 추상화 방식) 라고 한다. 스프링은 OXM 뿐만 아니라 ORM, 캐시, 트랜잭션 등 다양한 기술에 대한 PSA를 제공한다. 

댓글