
💡PSA -> 일관성있는 서비스 추상화 : 애플리케이션에서 특정 서비스를 이용할 때,
서비스의 기능에 접근하는 방식 자체를 일관된 방식으로 유지하며 기술 자체를
유연하게 사용할 수 있도록 하는 것
즉, 환경과 세부 기술의 변화 없이 일관된 방식으로 기술에 접근할 수 있게 해주는 것
| 게임기 예시 | 스포츠 예시 |
|---|---|
| 하나의 범용 컨트롤러가 모든 콘솔에서 작동 ➡️ 사용자는 새로운 콘솔을 살 때마다 새로운 컨트롤러를 배우지 않아도 됨 | 축구, 야구, 농구와 같은 스포츠는 모두 구기종목에 해당 게임하는 방식은 달라도 “공을 던지고 받는” 행위로 이뤄짐 ➡️ 이러한 행위를 별도로 분리하면 무슨 종목을 수행하더라도 공을 던지고 받는 게임 자체에 집중할 수 있음 |
| 게임 | 스포츠 |
|---|---|
| • 새로운 컨트롤러를 매번 배우는 불편함 없이 바로 게임 플레이에 집중 가능 • 다양한 환경에서 일관된 게임 플레이 경험 제공 • 개인화된 컨트롤러 설정 및 느낌 모든 게임에 적용 가능 • 별도의 컨트롤러를 각 콘솔마다 구입할 필요가 없으므로 사용자는 장비에 들어가는 비용을 절약할 수 있음 | • 기본적인 '공을 넘기고 받는' 기술을 배움으로써 여러 구기종목(축구, 농구, 배구 등)에서 활용 가능 • 새로운 또는 다른 규칙을 가진 스포츠에 빠르게 적응할 수 있고, 특정 규칙이나 전략에 더 집중할 수 있음 • 하나의 기술 세트로 여러 스포츠를 커버할 수 있기 때문에 다양한 스포츠에 대한 별도의 훈련이나 장비 구매 비용을 절약할 수 있음 |
💡 쪼갤 수 없는 업무 처리의 최소 단위
스프링은 원,일,격,영을 지원하기 위해 인터페이스를 제공함

트랜잭션을 관리하는 인터페이스로 Platform Transaction Manager가 있다.
여러 트랜잭션 관리 기술 중에는 JDBC / JTA / Hibernate 등이 있다.
➡️ 각각 다른 트랜잭션 관리 기술을 사용하지만 해당 인터페이스를 통해 여러 트랜잭션 관리 기술을 추상화하고, 개발자에게 동일한 트랜잭션 관리 인터페이스를 제공
스프링은 PSA를 통해 개발자에게 트랜잭션 관리 기술(JDBC / JTA / Hibernate)에 구체적으로 종속되지 않고 동일한 방식(동일한 메서드)으로 트랜잭션을 다룰 수 있도록 돕는다.
💡JPA(Java Persistence API)는 Java에서 관계형 데이터베이스를 객체-관계방식(ORM)으로
사용할 수 있도록 만든 인터페이스
ex) ORACLE, SQL Server, MySQL
1. 객체-관계 매핑 (OPM)
2. 데이터베이스 독립성
3. 추상화
4. 트랜잭션 관리
➡️ JPA를 사용함으로써 개발자는 객체 지향적이고 데이터베이스에 독립적인 방식으로 애플리케이션을 개발할 수 있다.
➡️ 기술과 서비스에 대한 추상화 기법으로 특정 기술 환경에 종속되지 않는 코드를 만들 수 있다.