Spring - 핵심 구조 (POJO,PSA)

J-USER·2021년 11월 7일
1

BE

목록 보기
5/5

이전 포스팅에서 스프링의 등장 배경에 대해 알아보았습니다. 그러면 자연스럽게 그래서 스프링은 뭔데? 라는 질문으로 이어집니다.

이번 포스팅에서는 스프링을 뜯어보도록 하겠습니다!!

Spring 삼각형

이 사진은 스프링의 핵심을 나타낸 삼각형으로, 기업용 어플리케이션 개발시 복잡함을 어떻게 해결하는지에 대한 Spring의 핵심입니다.

위의 그림을 배경에 두고 하나씩 뜯어보죠.

POJO

이전 포스팅에서 다뤘던 POJO입니다. POJO는 Plain Old Java Object의 줄임말입니다.

여기서 Plain은 특정 환경, 프레임워크에 종속적이지 않다는 의미고 Old Java Object는 말 그대로 객체지향 원리에 충실한 클래스형태의 자바객체를 의미합니다.

POJO에 기반하는 Spring의 특징은,

  • 특정 인터페이스를 구현하거나, 클래스를 상속하지 않는 일반 자바 객체 지원.
  • 스프링 컨테이너에 저장되는 자바객체는 특정 인터페이스,클래스 상속 없이 사용 가능.

사실상 POJO는 일반적인 자바 객체를 칭하는 별칭이라 할 수 있습니다 😇

PSA

PSA는 Portable Service Abstraction을 의미 하는데요. 직역하자면, 휴대용 서비스 추상화..? 로 번역 되어서 무엇을 의미하는지 알기 쉽지 않습니다.

PSA는 환경의 변화와 세부기술의 변경과 관계없이 일관된 방식으로 기술에 접근할 수 있게 해주는 설계 원칙
입니다. 즉 복잡한 어떤 기술을 내부에 숨기고 개발자에게 편의성을 제공하는 것이죠! 이러면 이제 위의 내용이 어느정도 이해가 갑니다.

Portable(어느 환경이든) Service(복잡한 기술을) Abstraction(추상화를 사용해) 사용할 수 있다!

그럼 어떤 복잡한 기능을 추상화로 이용할 수 있을까요?

대표적으로 트랜잭션 추상화, OXM(XML과 자바오브젝트를 매핑해서 상호 변환해주는 기술) 추상화, 데이터 액세스 예외 처리 등 Low Level의 기술 구현 부분과 기술을 인터페이스로 분리

ex) DB에 접근하는 방법은 여러가지가 있습니다. 기본적으로 Jdbc를 통해 접근할 수 있으며 ORM을 이용하고자한다면 JPA를 통해서 접근할 수도 있습니다.

그러나 신기하게도 어떠한 경우라도 @Transactional 어노테이션을 선언하는 것 만으로 별도의 코드 추가 없이 트랜잭션 서비스를 사용할 수 있다는 사실입니다.

나머지 2가지는 내용이 방대해 다음 포스팅에서 봅시다!

profile
호기심많은 개발자

0개의 댓글