Spring Data JPA Repository의 기본 구현체를 분석해보며 기계적으로 서비스 계층의 메서드에 `@Transactional` 어노테이션을 붙이는 것이 적절한가? 그리고 JPA가 제공하는 메서드들은 내부적으로 어떻게 동작할까? 일반적으로 Spring Data JPA를 사용해 Repository를 Interface로 만들고 메서드 쿼리를 사용한다면 `save()`, `findById()`와 같이 메서드 이름으로 원하는 쿼리를 만들어낼 수 있다. Interface만으로 동작할 수 없으므로 `save()`, `findById()`와 같은 기본 메서드를 구현하는 구현체가 있을 것이다. 이 구현체의 동작 방식을 코드 레벨에서 확인해보면 내가 정확히 알지 못하고 사용하던 메서드를 조금 더 깊게 이해할 ..
Spring이 지원하는 DB Transaction의 내부 동작 원리와 Transaction Propagation이 동작하는 방식을 파악하기 위해 디버깅을 해봤다. @Transactional 어노테이션을 클래스 레벨이나 메서드 레벨이 붙이면 Spring이 DB Transaction 관리를 알아서 해준다.이렇게 작성하면 프레임워크가 혹은 라이브러리가 알아서 해준다, 정도로 이해해야 하는 상황이 가장 답답하게 느껴진다. 어떻게 알아서 해준다는 것인지 따로 찾아보지 않으면 영원히 모르게 될 가능성이 높기 때문이다. 그래서 알아서 해주는 것을 확인하고 적용해본 다음에는 꼭 어떻게 알아서 해주는 것인지를 찾아봐야 마음이 놓인다.보통은 서비스 계층의 메서드에 @Transactional 어노테이션을 붙이면 해당 메서드..
- Total
- Today
- Yesterday
- Misc
- Database
- React
- Spring
- XSS
- webgoat
- WEB
- Bandit
- askers
- DP
- sql injection
- opengraph
- WarGame
- sqli
- oauth2
- JPA
- linux
- CSRF
- 회고
- test
- Transaction
- Framework
- Dreamhack
- java
- Spring Security
- SEO
- PS
- math
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |