Spring
-
@Transactional 에 대한 고찰Spring 2023. 3. 26. 21:43
스프링에서 트랜잭션 처리를 지원하는데 어노테이션 방식으로 @Transactional 을 선언하여 사용하는데, 여기서 얘기하는 트랜잭션 개념은 다른 글에서도 워낙 많은 편이니 생략하도록 하겠다. @Transactional 이란? 메서드나 클래스에 @Transactional 추가하게 되면 자동적으로 트랜잭션을 시작하고, 정상 여부에 따라 Commit 또는 Rollback 하게 된다. 위에서 얘기한 @Transactional 추가 위치에 따른 처리 차이에 대한 내용이다. 메서드에 추가한 경우: 해당 메서드만 트랜잭션 처리 클래스에 추가한 경우: 모든 메서드의 트랜잭션 처리 @Transactional 사용시 주의점 다음 내용은 최범균님의 '프로그래밍 초식 : 초심자가 저지르기 쉬운 DB 코딩 실수 3가지' 에서..
-
JPA Hibernate ProxySpring 2022. 9. 13. 17:39
오늘도 열심히 사이드 프로젝트를 진행하던 중 동행모집 엔티티의 속한 멤버 중 요청 유저가 속해있는지 검사하는 걸 진행하던 중 의도와는 다르게 진행하는 걸 확인하게 된다. 동행모집 참가서 에서 불러온 Gathering 엔티티 안에 있는 GatheringMember 엔티티 데이터가 분명히 있는데도 불구하고 호출해서 확인해보면 의도와는 다르게 진행해서 디버그 모드로 해당 데이터들을 확인해보니 다음 스샷처럼 되어 있는걸 알 수 있었다. gathering 과 requestUser 모두 데이터는 있을텐데 내부 데이터들이 모두 다 null 로 되어 있다. 그리고, 해당 변수의 처음 정보를 보면 Gathering$HibernateProxy~~~~ User$HibernateProxy~~~~ 이렇게 되어 있는 것을 알 수..
-
Spring API 공통 response 포맷 개발하기Spring 2022. 7. 10. 18:24
기존 프로젝트 API 에서 response 되는 데이터를 살펴보니, response 가 내려가긴 하는데, 성공인 경우와 실패의 경우가 각각 다른 포맷의 response 가 내려가고 있었다. 서버는 데이터를 주긴 하지만 프론트 입장에서는 이렇게 개발하기 난감할 것이라는 생각이 들기도 하고, 게다가 사용자 정의 Exception 처리도 없어, 공통 response 포맷을 개발하는 것이 필요하다고 생각하였다. 다른 블로그 및 글들을 찾아본 뒤 다음 응답 클래스를 만들어보기로 했다. @Getter public class ApiResponse { private final int code; private final String message; private final List errorDetails; private..