JinhoonLog

[TROUBLE_SHOOTING] Maria DB 쿼리 로그가 보이지 않았던 이유

발생상황 Redis 에 저장된 정보를 DB 에한번에 저장할 필요가 있었다. 한개 한개씩 저장하는 쿼리를 날리면, 그 한개 한개마다 DB 에 연결하고 연결을 끊는 작업이 반복된다. 그래서 방법을 찾다가 하이버네이트 배치를 이용한 벌크성 쿼리 저장 방식을 찾았다. 아래글은 벌크성 쿼리 저장할 수 있는 관련글이다. https://techblog.woow...

[SPRING] 스프링 구글 로그인(OAuth)

작성계기 프로젝트 개발중에 소셜로그인(OAuth) 이용해 로그인서비스를 진행해야 했다. 그 중에 구글을 이용해 개발하는것을 담당했는데 Spring Security 이용한 개발방법과, Api 를 이용해 개발하는방법이 있어 헷갈렸었다. 그래서 정리삼아 이글을 작성해본다. (프론트가 따로 있기에 Api 를 이용해서 개발한다!) 요구사항 개발 요구사항은...

[SPRING] 스프링 예외처리 방법과 전략, @ControllerAdvice

작성 계기 개발을 하다보니 예외처리가 필요한일이 많았다. 평소 자바에서는 try ~ catch 구문으로 예외를 잡아주었다. 하지만 이렇게하니까 try ~ catch 구문이 너무 많아지면서 코드의 가독성이 떨어진다고 생각했다. 많은 사람이 사용하는 SPRING 프레임워크가 이런 문제도 고려안했을까? 라고 생각하고 찾아봤더니 전역으로 예외처리를 해주는 ...

[SPRING] 스프링에서 CORS 해결방법 2가지 + SpringSecurity

작성 계기 스프링으로 처음으로 백엔드 프로젝트를 하다가 프론트한테 CORS 에러가 발생해서 api 통신이 안된다고 연락이 왔다. 내가 혼자서 서버에 스웨거로 api 를 테스트했을때는 문제없었기에 프론트문제인줄 알았다. 하지만 문제를 찾아보니 백엔드에서 처리해줘야 하는 문제였고, 프론트와 벡엔드가 api 를 이용해 통신한다면 무조건 직면할 수 밖에 없...

[SPRING] JPA 에서 @ColumnDefault 적용을 위한 @DynamicInsert VS @PrePersist

작성계기 개발 중간에 단위테스트를 진행하고 있었다. 그런데 Store 라는 엔티티에는 수 많은 필드가 작성되어있고, 내가 테스트할려는 로직에는 그 수 많은 필드의 값을 다 채울 필요가 없었다. 그런데 int 자료형인 필드의 경우 DB 에 들어갈시 null 로 저장되면 Java 에서 가져올 때 int 타입에는 null 값이 없어 에러가 발생한다. 그...

[SPRING] JPA 에서 위도 경도 기반으로 가게 탐색하기

개발 계기 사용자 위치를 기반으로 주변 가게를 탐색하는 비즈니스 로직을 개발하고 있었다. 프론트단에서 카카오맵 API 를 이용해서 사용자의 위도경도 찾으면 서버로 보내준다. 그럼 나는 받은 위도, 경도를 기준으로 특정거리내에 있는 가게를 DB 에서 가져와야 한다. 개발 환경 Spring 2.7.9 JPA MySQL 8.0 위도와 ...

[HTTP] HTTP 캐시헤더

HTTP 캐시헤더 캐시가 없으면 데이터가 변하지않았을 때 똑같은 요청에 대해 똑같은 응답을 반복해야 한다. 캐시 기본 동작 캐시를 사용하면 응답결과를 캐시에 저장한다. 사용자가 재요청할시 캐시에 있다면 네트워크를 사용하지 않고 캐시에서 조회하여 사용한다. 검증헤더와 조건부 요청 : 캐시 유효 시간이 초과했는데 서버에서 기존 데이터가 변경되지...