java
-
Spring Data JPA 가이드 모음JPA 2024. 5. 2. 00:18
Spring Boot/JPA 시작하기작성 중..Spring Boot에서 JPA 시작하기JPA 연관 관계JPA : 영속성 전이(Cascade)JPA 연관 관계의 주인과 소유 측: 개념 및 예제JPA 연관 관계 어노테이션의 속성 분석부록JPA에서 신규 엔티티 처리: EntityManager.persist()와 JpaRepository.save()의 차이점 파악하기Spring Boot JPA : Java 날짜/시간 데이터 타입과 JPA, MySQL 타임존의 관계참고 자료Baeldung - All Spring Data GuidesBaeldung - Learn JPA & HibernateBaeldung - N+1 Problem in Hibernate and Spring Data JPA[책] 자바 ORM 표준 JP..
-
JPA에서 신규 엔티티 처리: EntityManager.persist()와 JpaRepository.save()의 차이점 파악하기JPA 2024. 4. 30. 22:08
동일한 신규 Entity를 생성하여 EntityManager.persist()와 JpaRepository.save()를 통해 영속화 시켰을 때의 동작과 결과가 다를 때가 있다. 이에 대해 알아보자.EntityManager.persist()persist()를 호출할 때 전달된 엔티티 인스턴스 자체가 영속 상태가 되어 변화를 추적한다. 이 메소드는 반환값이 없으며, 저장하는 객체와 영속성 컨텍스트에 들어간 객체가 동일한 참조를 유지한다.EntityManager.merge()merge()를 호출할 때 전달된 분리된(detached) 엔티티 인스턴스의 상태를 복사하여 영속성 컨텍스트에 병합한다. 이 메소드는 새로운 영속 상태의 엔티티 인스턴스를 반환하며, 전달된 원래의 분리된 엔티티는 여전히 분리 상태로 남아 ..
-
Spring Boot JPA : Java 날짜/시간 데이터 타입과 JPA, MySQL 타임존의 관계Spring Boot 2024. 4. 11. 01:42
Java 타입과 MySQL 저장 타입별 분석 최종 결론타임존이 필요한 시간을 저장할 때는 ZonedDateTime을 MySQL의 datetime에 저장하는 방식을 사용하자.장점: 다른 어떤 타임존 설정에도 영향받지 않는다.단점(아닐 수도): DB에는 항상 UTC 기준 시간으로 저장되고 조회된다.Java의 Date 타입은 DB 타임존과 DB 세션 타임존을 일치시켜서 MySQL의 timestamp에 저장해야 정확한 시간 값을 저장하고 조회할 수 있다.Java의 Calendar 타입은 DB 타임존과 DB 세션 타임존, Calendar 타임존을 일치시켜서 MySQL의 timestamp에 저장해야 정확한 시간 값을 저장하고 조회할 수 있다.Java의 LocalDateTime 타입은 시스템 기본 타임존과 DB 세션..
-
Spring Boot : ProblemDetailsExceptionHandlerSpring Boot 2024. 4. 10. 18:55
ProblemDetail ProblemDetail은 Spring Framework 6.0에 추가된 REST API의 에러 응답 표준이다. RFC 7807에 정의되어 있다. 참고: https://docs.spring.io/spring-framework/docs/6.0.7/reference/html/web.html#mvc-ann-rest-exceptions 아래는 간단히 Spring Boot의 기본 에러 응답을 ProblemDetail로 설정하는 방법을 설명한다. ProblemDetailsExceptionHandler 에러 응답 예시 아래는 Spring Boot의 기본 에러 응답을 ProblemDetail로 설정했을 때의 에러 응답 body이다. { "type": "about:blank", "title": ..
-
Spring Boot : Default Error Response : 기본 에러 응답Spring Boot 2024. 4. 10. 18:33
개발 환경Java 21Spring Boot 3.2.4기본 에러 응답Spring Boot에서 아무 설정도 하지 않고 RestController 구성하여 예외 발생시키면 다음과 같은 형태의 response body를 응답한다.{ "timestamp": "2024-04-05T13:37:51.440+00:00", "status": 405, "error": "Method Not Allowed", "path": "/"}어디에서 기본 에러 응답 body를 만드나?어디에서 어떤 과정을 거쳐 이런 형태의 에러 응답을 하는지 궁금하여 간략하게 정리해보았다.아래에 그 과정에서 알게된 몇 가지 설정도 적어두었다.아래에서 1차 처리package org.springframework.web.servlet.mv..