Spring, PSA
PSA
- Potable Service Abstraction
- 잘 만든 인터페이스(PSA)
- 내 코드는 변경하지 않아도 원하는 환경에 맞게 쉽게 변경할 수 있다
스프링 웹 MVC
- @Controller : 해당 에노테이션을 붙이면 요청을 매핑하는 controller클래스가된다
- @RequestMapping (@GetMapping, @PostMapping) 을 사용한다
- 톰캣, 네티, 제티, 언더토우
스프링 트랜잭션
-
@Transactional : 해당 에노테이션이 있으면 아래처럼 복잡하게 하지 않고 해당 메소드를 트랜젝션처리가 될 수 있도록 한다
-
jdbc Transaction ex
dbConnection.setAutoCommit(false);
// sql query가 들어와도 커밋하지 않고있다가
...
// 한꺼번에 커밋한다
dbConnection.commit();
- OwnerRepository.java
@Query("SELECT DISTINCT owner FROM Owner owner left join fetch owner.pets WHERE owner.firstName LIKE %:firstName%")
@Transactional(readOnly = true)
Collection<Owner> findByFirstName(@Param("firstName") String firstName);
- 내 코드는 변경하지 않아도 JpaTrasaction, Hibernate..등으로 바꿔 사용할 수 있다(Potable 특성)
Reference
-
[inflearn] 예제로 배우는 스프링 입문 백기선님 강좌