트러블슈팅
-
Spring의 트랜잭션(@Transactional)과 AOP 프록시 구조트러블슈팅 2025. 7. 1. 10:46
프로젝트 중 클래스 내부에 트랜잭션을 적용한 method(insert 관련 method)를 내부에 있는 다른 method에서 사용하려고 하니 해당 method가 실행 자체가 되지 않는다는 점을 찾게 되었다. @Servicepublic class MemberService { //... @Transactional(propagation = Propagation.REQUIRES_NEW) public void insertOne(User user) { em.persist(user); em.flush(); } public UploadResult processFile(MultipartFile file) { //... try { ..
-
[트러블슈팅] - save() vs persist()트러블슈팅 2025. 6. 30. 15:56
mybatis에서 JPA로 변경중에 pk값이 동일하면 insert를 날려도 실패했다는 표시 없이 그냥 로깅창에서는 아무런 표시가 나지 않아 해당 내용을 예외처리하기 위해 고민했다.save()와 persist()는 JPA에서 데이터를 저장할 때 사용되는 대표적인 방법이지만, 성격과 동작 방식이 다르다. save()와 persist()의 차이다.1. save() : Spring Data JPA 방식spring Data JPA의 CurdRepository, JpaRepository 등을 통해 사용내부적으로 merge() 호출id가 존재하면 → updateid가 없으면 → insert즉, 업서트(Upsert) 동작 (insert or update) 그러므로 만약 중복된 id가 있어도 덮어써버림 → 중복 검사 ..