분류 전체보기 371

[Spring] java 메모리에 존재하는 list 데이터 페이징 처리

프로그램 실행 중에만 존재하는 메모리 데이터에서의 Pagination은 JPA에서 제공하는 Page 객체를 활용하지 못하고, 페이징 처리를 위한 로직을 별도로 구현해줘야 합니다. 그래서 DB 조회 없이 메모리 내에서 List 데이터를 페이징처리 하기 위한 Util Class를 만들어봤습니다. 특정 Type에 의존하지 않고, 다양한 타입을 처리할 수 있도록 제네릭을 활용하였습니다.   public class PaginatedList { private List list; private List> listOfPages; private int pageSize = 10; private int currentPage = 0; public PaginatedList(List list, int ..

Java/Spring 2025.02.12

[Spring] @Formula annotation을 활용하여 count 조회 성능 개선

사내 애플리케이션에 장비와 사용자 수를 count 하는 쿼리가 존재했습니다. 조회 쿼리 성능을 개선하기 위함임은 알 수 있지만, 구체적으로 어떻게 동작하는지도 알아보려고 합니다. 더불어, 해당 어노테이션의 장점과 단점에 대해서도 상세히 설명드리겠습니다. @Formulaentity 내에서 실제로 db 스키마에 존재하지 않는 가상 컬럼 (jpa 상에서만 존재하고, 실제 db에 존재하지 않는 컬럼)을 정의할 수 있는 기능 다른 컬럼들의 값에 기반하여 계산된 값을 표현할 수 있으며, 엔티티를 조회할때만 계산되어 사용됩니다. (Read-Only)Default: EAGER 전략 이제 @Formula 어노테이션을 적용하였을 때 조회 쿼리와 lazy loading으로 size() 메서드를 호출하였을 때의 쿼리 차이를 ..

Java/Spring 2025.02.10

[필리핀🇵🇭] 마닐라 3일차 2025.01.20 (베니스 그랜드 캐널 몰, 산티아고 요새, SM몰 오브 아시아)

3일 차에는 원래 계획대로 실천했습니다. 개인적으로 가장 알차게 보냈던 날이라고 생각합니다. 제일 먼저 제가 가고 싶어 했던 베니스 그랜드 캐널 몰로 이동했습니다. 이탈리아의 베니스 운하를 모티브로 만들어서 그런가 이탈리아라 해도 믿을 정도였습니다.  알록달록하니 건물들도 예쁘게 디자인해놨고 확실히 다른 장소보다는 할 게 많았습니다. 요트를 타면서 찍은 사진들인데, 이쁘게 나와서 매우 만족스럽네요.구경을 대강 마친 후, 배가 고파서 조금 둘러보다가 바로 점심 식사하러 이동했습니다.   이번에 간 양식집은 카투사 출신 친구가 군대 때 미군 사람들에게 부탁하여 종종 갔다고 한 식당이라고 하였습니다. 저는 한국에 있으면서도 해당 식당을 모르고 있었는데, 정말 맛있게 먹었던 것 같습니다. 무엇보다 고기 옆에 새..

일상/여행 2025.02.01

[필리핀🇵🇭] 마닐라 2일차 2025.01.19 (따가이따이, 그린벨트 쇼핑몰)

2일 차에는 Grab에서 만난 택시기사님이 추천해 준 따가이따이라는 동네를 방문했습니다. (숙소에서 70km 정도 떨어진 동네였습니다)  해당 장소로 출발 전에 스타벅스에 들려 커피를 마셨는데, 역시나 경비원분은 계셨습니다.가격은 한국과 별반 차이 안났었고, 전체적인 물가도 체감상 한국과 비슷했습니다.  여기를 추천해줬을 때 저와 친구는 이러한 풍경을 연상하며 갔습니다. (따가이따이는 화산섬으로 유명한 관광지라고 알려져 있습니다) 하지만, 택시기사님은 무슨 놀이공원 같은 곳에 데려다줬습니다.  의도치 않게 친구와 함께 생각지도 못하게 로컬 놀이공원을 가게 되었습니다. 한국으로 치면 롯데월드, 에버랜드가 아닌 경주월드 정도로 생각하면 좋을 것 같습니다. (입장료는 한국 돈으로 3000원이길래 만족스러웠습니..

일상/여행 2025.02.01

[필리핀🇵🇭] 마닐라 1일차 2025.01.18 (니노이 아키노 국제공항, 세인트 자일스 호텔 이동 과정)

최근에 마닐라를 다녀왔기에 여행 포스팅을 하려고 합니다. 예전부터 되게 가고 싶어 했던 국가였는데, 가게 되어서 매우 만족스럽고 마닐라 여행 과정들을 상세히 기록하려고 합니다. 첫째 날부터 매우 다사다난했는데, 같이 간 친구와 평생 술안주거리로 남을 것 같네요. 비행시간이 오후 1시 차였기에 오전 10시까지 인천 국제공항에서 만났습니다. 만나서 체크인 및 etravel 등록을 미리 하고 커피를 마시러 갔습니다.  체크인과 이트래블을 마친 후 11시쯤 되었는데, 친구와 아무 생각 없이 제육과 돈까스를 먹으러 갔습니다. 맛있게 먹고 나니 11시 40분 정도 되었습니다. 이때부터가 문제의 시작이었습니다. 탑승수속 및 출국심사 게이트 줄이 너무 길었기에 비행기를 못 탈 뻔했습니다. 심사를 마친 후 친구와 순환버..

일상/여행 2025.02.01

[DB] DB 형상관리를 위한 Flyway 적용

소스코드의 변경사항과 버전은 Git을 통해 관리하지만, DB의 변경사항을 관리할 때는 Flyway를 활용할 수 있습니다.  Flyway를 활용한다면, 수동으로 sql문을 실행하고 애플리케이션을 재구동해야하는 번거로움을 해소할 수 있게 됩니다. Flyway에 관련한 개념과 was에서의 설정, Convention 등을 알아보겠습니다. Flywayopen-source database-migration toolDB MigrationDB Schema의 version을 관리하기 위한 방법DB의 변경사항을 추적하고, 업데이트 및 롤백을 보다 쉽게 할 수 있도록 도와줍니다.Schema데이터베이스의 구조와 제약조건에 관하여 전반적인 명세를 기술개념 스키마: 전체적인 view 내부 스키마: 물리적인 저장장치에서 DB가 저..

Database 2025.01.07

[Spring] Json 직렬화, 역직렬화

개발 중 Lazy Loading 된 객체에서 해당 소스코드가 존재했습니다.public String getRegionName() { return region == null ? null : region.getName();} Intellij에서 no usage로 해당 메서드를 사용하는 클래스가 존재하지 않았지만, 해당 정보를 가져올 수 있었습니다. 그 이유는 Json 직렬화, 역직렬화의 내부적인 동작과정 때문인데요. Json 직렬화, 역직렬화에 대해 알아보고 정리해 보도록 하겠습니다.  기본적으로 Spring Application을 구동하기 위한 의존성인 spring-boot-starter-web에 Json 직렬화 및 역직렬화를 할 수 있는 라이브러리가 내장되어 있습니다. (Jackson Library)..

Java/Spring 2024.12.24

[필리핀🇵🇭] 필리핀 마닐라 여행 준비물 및 관광지 정리

내년 초에 마닐라 여행을 가게 됐는데요. 마닐라에서 필요한 항목들은 무엇인지 알아보겠습니다. 준비물돼지코 (110V 일수도 있기에 사전 대비), 비에 젖어도 되는 신발 우비, 상비약,  쪼리, 선크림, 필기구, 샤워기필터 (필수)여권, 왕복항공권ESIM, 보조배터리의류 되도록 한두 장 챙기고, 이외에는 필리핀에서 구매ESIM참고: https://blog.naver.com/sol2roo/223494309495?trackingCode=rss  ETravel 전자입국신고서 (입국 72시간 이내)참고: https://blog.naver.com/gung52/223354453887 Agoda 숙소 예약니노이아키오 국제공항과 교통이 원활한 곳으로 숙소 예약 관광 및 쇼핑이 목적이므로 치안이 안전한 곳으로 예약참고: ..

일상/여행 2024.12.22

[Java] Garbage Collection

Java 프로그램을 개발하다 보면 OutOfMemoryError을 마주하게 되는데, 이는 JVM Heap 메모리의 부족 현상에 밀접한 연관이 있는 에러입니다. 이를 해결하기 위해 Garbage Collection 과정이 발생하게 되는데 해당 개념과 동작원리, 알고리즘에 대해 알아보겠습니다.  Garbage Collection 메모리 관리 기술중 하나로서 JVM의 Heap 영역에서 동적으로 할당되었던 메모리 중 사용하지 않은 객체를 모아 주기적으로 제거하는 프로세스입니다. JVM의 메모리 구조중 일부인 Heap 영역에 관여하는 프로세스입니다. 뒷단에 내용을 수월하게 이해하기 위해 JVM Memory 구조를 설명드린 후 핵심 내용에 대해 알아보겠습니다. JVM Memory 구조Static (Method) 영..

Java 2024.12.05

[Spring] RestTemplate

카카오 OAuth 로그인을 구현해 보면서, RestTemplate을 사용하게 되었는데 RestTemplate이 무엇인지와 동작원리 등에 대해 정리해보려고 합니다.  RestTemplateHTTP 통신을 위한 도구로 Rest API 웹 서비스와의 상호작용을 쉽게 할 수 있도록 도와주는 도구HTTP 메서드를 제공하고 원격 서버와 동기적, 블로킹 방식으로 Json, xml 방식으로 다양한 데이터 형식으로 통신합니다.Spring Framework의 핵심이 제공하는 동기식 RestClient간단하게 외부 도메인과 Rest API을 제공하는 서비스와의 상호작용을 쉽게 해주는 도구로 해석하면 될 것 같은데요. 이제 동작 원리에 대해 설명드리도록 하겠습니다.  RestTemplate FlowApplication이 Re..

Java/Spring 2024.11.22