Solmi's Development Blog
![[JPA] @OneToOne, 일대일(1:1) 연관관계 매핑 시 주의할 점 (지연 로딩 이슈)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvV2LY%2FbtsqILpSn3g%2FQJmRKIkIaD5OsKZY8tnhw0%2Fimg.png)
[JPA] @OneToOne, 일대일(1:1) 연관관계 매핑 시 주의할 점 (지연 로딩 이슈)
문제 JPA를 사용하며 테스트를 통해 실제 수행되는 쿼리를 수시로 체크하는데, 일대일(1:1) 양방향 연관관계를 지니는 테이블에서 FetchType.LAZY가 적용되지 않아 불필요한 쿼리가 호출되는 것을 발견하였다. 아래는 문제가 되는 SHELTER와 SHELTER_USER의 연관관계 다이어그램이다. SHELTER와 SHETLER는 1:1 양방향 연관관계로 매핑되어 있으며, 대상 테이블인 SHELTER_USER에 외래키를 두고 있다. 문제는 SHELTER를 조회 시 SHELTER_USER 테이블도 즉시 로딩되어 아래와 같이 쿼리가 두 번 호출된다. 2023-08-11T17:58:58.461+09:00 DEBUG 2272 --- [nio-8080-exec-3] org.hibernate.SQL : /* */..
[Sentry] Exception Handler를 거치기 전 Sentry로 에러 전달 및 Exception 필터링 (Spring Boot)
https://intothemaze.tistory.com/14 [Sentry] Spring Boot에 Sentry 적용하기 Sentry Sentry는 오픈소스 기반의 에러 트래킹 및 로깅 도구로, 애플리케이션에서 발생하는 버그, 예외, 성능 문제 등을 감지하고 이를 기록하여 개발자들에게 제공한다. 구독형인 클라우드 버전과 intothemaze.tistory.com https://intothemaze.tistory.com/15 [Sentry] Sentry Slack 연동 및 Logging 레벨 설정 (Spring Boot) 지난 포스팅과 연결 됩니다. https://intothemaze.tistory.com/14 [Sentry] Spring Boot에 Sentry 적용하기 Sentry Sentry는 오픈소..
![[Sentry] Sentry Slack 연동 및 Logging 레벨 설정 (Spring Boot)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpI1lC%2FbtsqrNVwhpy%2FkGgvS5kIVjGPhOcdsSZLr0%2Fimg.png)
[Sentry] Sentry Slack 연동 및 Logging 레벨 설정 (Spring Boot)
지난 포스팅과 연결 됩니다. https://intothemaze.tistory.com/14 [Sentry] Spring Boot에 Sentry 적용하기 Sentry Sentry는 오픈소스 기반의 에러 트래킹 및 로깅 도구로, 애플리케이션에서 발생하는 버그, 예외, 성능 문제 등을 감지하고 이를 기록하여 개발자들에게 제공한다. 구독형인 클라우드 버전과 intothemaze.tistory.com Sentry Logging Level 설정 application.yml에서 Sentry의 Logging Level을 WARN으로 설정해줄 수 있다. sentry: dsn: {dsn} logging: enabled: true minimum-event-level: warn Slack 연동 Settings > Integr..
![[Sentry] Spring Boot에 Sentry 적용하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHUNsP%2Fbtso8yS2YTt%2FjnpYDRDK8K3ICJOVBnccrk%2Fimg.png)
[Sentry] Spring Boot에 Sentry 적용하기
Sentry Sentry는 오픈소스 기반의 에러 트래킹 및 로깅 도구로, 애플리케이션에서 발생하는 버그, 예외, 성능 문제 등을 감지하고 이를 기록하여 개발자들에게 제공한다. 구독형인 클라우드 버전과 설치형인 온 프레미스 버전으로 나뉜다. 주요 기능 에러 모니터링: 애플리케이션에서 발생하는 에러와 예외를 실시간으로 모니터링하여 개발자들에게 알린다. 이를 통해 빠르게 에러에 대처할 수 있고 사용자들의 문제를 사전에 감지할 수 있다. 스택 추적(Stack Trace): 에러가 발생한 위치를 포함한 스택 추적 정보를 제공하여, 어떤 코드에서 에러가 발생했는지를 파악할 수 있다. 이를 통해 디버깅과 문제 해결을 용이하게 한다. 사용자 정보: 에러가 발생한 사용자의 정보(환경, 브라우저, 디바이스 등)를 수집하여..
[JPA] Failed to create query for method public abstract. No property found for type.
에러 내용 Caused by: java.lang.IllegalArgumentException: Failed to create query for method public abstract org.springframework.data.domain.Page co m.bemate.domain.shelter.repository.PetRepository.findByShelterNo(com.bemate.domain.shelter.entity.Shelter,org.springframework.data.domain.Pageable); No property 'no' found for type 'Shelter'; Did you mean 'id'; Traversed path: Pet.shelter 코드 public interf..
![[JAVA] String Pool과 불변성](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdffmOs%2FbtsnDx14Jzy%2FKBJrG1uxIrDmUbL8JK7qG1%2Fimg.png)
[JAVA] String Pool과 불변성
String과 불변성 Java에서 String은 immutable, 즉 불변 객체이다. 불변(immutable)하다는 것은 문자열이 일단 생성되면 그 값이 고정되어 있으며, 변경되더라도 원래의 문자열 내용이 변경되는 것이 아닌 새로운 문자열 객체가 생성됨을 의미한다. 예를 들어, String str1 = "Hello"; String str2 = str1; str1 = str1 + " World"; 위 코드에서는 "Hello"라는 문자열이 먼저 생성되고, 변수 str1과 str2가 이 문자열을 참조한다. 그리고 str1에 " World"를 추가한 새로운 문자열을 할당한다. 하지만 문자열은 변경할 수 없으므로, 실제로는 새로운 문자열이 생성되고 str1은 이 새로운 문자열을 참조하게 된다. str2는 여전히..