Spring Boot

· Spring
⚡ 개요 기본적으로 QueryDsl을 사용할때 QClass가 생성이 된다. 초기에 QueryDSL을 사용하면서 궁금했던 내용은 그냥 Entity를 사용해도 될거같은데 굳이 QClass를 만들어서 사용을 할까? 어떻게 만드는거지? 라는 기본적인 궁금증에서 래퍼런스 문서 부터 많은 블로그의 내용을 찾아봤으며 해당 내용을 정리 해보려고 한다. JPA_APT(JPAAnnotationProcessorTool)가 @Enttiy 와 같은 특정 어노테이션을 찾고 해당 클래스를 분석해서 QClass를 만들어 준다. 빌드 도구를 통해서 만드는 방법은 다른곳을 찾아봐도 나오니 생략한다. (Gradle의 경우, 버전별로 설정을 하는 방식이 다르기 때문에 버전에 맞게 잘 찾아서 사용 해야 한다.) ✋ APT 란 ? Annota..
· Spring
⚡ 개요 래거시 APP 기준으로 신규 개발을 해야 되는 내용이 있어서 이미 쿼리가 다 짜져 있기 때문에 JPA가 아닌 mybatis를 사용해서 신규 개발을 했던 내용을 정리해놓으려고 한다. (신규로 구축하려니까 생각보다 헤맴..) 내용 중 기본적인 내용과 다른 부분이 있다면 DB를 두 개를 사용해서 연동이 들어갔다는 점이다. (mssql, oracle) ⚡ 기술 스택 Spring Boot 3.0.5 JAVA 17 MSSQL Oracle Mybatis ⚡ 사용 방법 정리 전반적인 사용 방법에 대해서 정리하기보다는 내가 좀 버벅거렸던 부분에 대해서 사용 방법을 정리하고 넘어가려고 한다. DatabaseConfig 설정 데이터 베이스를 관리할 때 Hikari Datasource (2.0부터는HikariCP가 ..
· Java
⚡ 개요 이번에는 QueryDsl에서 DateType을 사용하는 방법에 대해서 정리를 해보려고 한다. QueryDsl을 사용하면서 Projections을 통해 쿼리 결과를 DTO 클래스로 변환해서 반환을 받고 리턴을 하는 경우가 종종 있다. 이때 조회 Entity 의 타입이 Date Type인 경우 변환을 할때 타입 에러가 발생하게 된다. 우리의 경우 데이터를 조회할때 예를 들어 1000개의 데이터중 필요한 Entity를 조회 해서 DTO로 변환을 하는 작업을 한다. 데이터의 양이 적다면 속도적인 측면에서 크게 문제가 되지 않지만 이력쪽 데이터를 조회하는 경우에는 속도적인 측면에서 많은 저하가 발생을 하게 되었다. 또한 데이터가 적더라도 컬럼의 타입 그대로가 아닌 변환을 해서 사용 해야하는 경우에도 En..
· Spring
QueryDsl서브쿼리를 사용하는 방법에 대해서 내용을 한번 정리해보려고 한다. 회사 내부 신규 프로젝트의 경우 Spring Boot + JPA를 기반으로 프로젝트를 진행하고 있다. 내부적으로 쿼리 작업을 하면서 Spring Data JPA에서 기본적으로 제공해 주는 CRUD 메서드를 사용하더라도 데이터를 얻는 데에 많은 어려움이 존재했고, QueryDsl 라이브러리를 통해서 원하는 데이터를 얻어내고 있다. 그중 많이 사용하지만 매번 까먹는 내용인 서브 쿼리 사용 방법에 대해서 정리를 하려고 한다.😀 ⚡QClass 생성 가장 기본적으로 QueryDsl을 사용하려면 먼저 QClass를 생성해야 한다. QClass는 Querydsl에서 사용하는 엔티티의 필드와 연산자에 대한 메타 정보를 제공하는 클래스이다...
· Spring
1. 연동 이유 및 사용했던 부분에 대한 내용 정리 회사 내부의 래거시 시스템인 근태 관리 시스템 고도화 개발중 사용자의 근무 시간 및 근무 정책에 따라서 동적으로 근무 정보를 표현하는 부분이 존재했다. 관리자가 정책 변경 또는 사용자가 근무 시간을 변경 (초과 근무, 휴가, 출장등) 을 신청 하고 결재하게 되면 사용자의 스케줄이 변하게 되고 해당 사용자 별로 각각의 유동적이 스케줄을 가지게 됩니다. 근무 정보를 구할때, 사용자 정보, 신청 정보, 이미 정산이된 근무량 등등(...😱) 너무 많은 데이터를 조합해서 근무 정보를 구해야한다. 고객사의 기준으로 년 단위 조회 또는 구축이 된지 오래된 고객사의 경우는 조회가 너무 느려지는 이슈가 발생을 하면서 방법을 찾기 시작했다. 쿼리 튜닝, DB 인덱스 추가..
· Spring
⚡GraphQL SPQR이란? GraphQL 은 웹 API를 위한 쿼리 및 조작 언어이다. GraphQL을 보다 원활하게 사용할 수 있도록 만든 라이브러리 중 하나는 SPQR 이다. 기존 접근 방식에서는 GraphQL을 프로젝트에 추가하려면 두 단계를 따라야 한다. 먼저 GraphQL 스키마 파일을 프로젝트에 추가해야 한다. 둘째, 스키마에서 각 유형을 나타내는 각각의 Java POJO를 작성해야 합니다. 이는 스키마 파일과 Java 클래스의 두 위치에서 동일한 정보를 유지 관리한다는 것을 의미한다. 이러한 접근 방식은 오류가 발생하기 쉽고 프로젝트를 유지 관리하는 데 더 많은 노력이 필요하다. GraphQL Schema Publisher & Query Resolver, 간단히 말해서 SPQR은 위의 문..
· GraphQL
⚡GraphQL 이란? GraphQL은 2012년 페이스북 개발자들이 모바일 어플리케이션을 제작하면서 만든 쿼리 언어이다. 기존에 많은곳에서 사용중인 REST API를 보안하기 위해서 만들어 졌으며 현재 많은 곳에서 Graphql을 사용하고 있다. GraphQL은 SQL (Structed Query Language) 와 같은 쿼리 언어 이다. 하지만 언어적 구조의 차이는 매우 크고 사용하는 방식에도 차이가 존재한다. SQL이 데이터베이스 시스템으로 부터 데이터를 가져온다면, GraphQL의 경우는 클러이언트가 데이터를 서버로 부터 가져온다. ⚡GraphQL vs REST GraphQL이 REST API 방식을 보안하기 위해서 만들어졌다면 어떤 차이점이 존재하는지 한번 알아보자 GraphQL API는 보통..
· Spring
⚡Spring JPA (Java Persistence API) JPA는 자바 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음이다. ⚡ORM ORM(Object-Relational Mapping)은 객체와 관계형 DB를 매핑한다는 뜻 객체-관계 매핑의 줄임말이다 ORM을 이용하면, SQL문이 아닌 클래스의 메소드를 통해서 데이터베이스를 조작 가능하다. 개발자가 객체 모델만 이용해서 프로그래밍을 하는데 집중이 가능하다. 단점이 있다면, 신중하게 설계가 필요하다. 프로젝트의 복잡성이 커지는 경우 잘못된 구현으로 인해서 속도 저하 및 일관성이 없는 문제점이 생길수 있다. 구형 SQL문이라던지 대형 SQL문의 경우 속도측면에 따라서 별도의 튜닝이 필요하기 ..
· Spring
⚡ 들어가기전 개발을 진행 하면서, 핵심 로직을 작성한 뒤에 공통적으로 따라오는 부분이 존재 하면서 AOP를 공부하게 되었다. 예를 들어서 특정 로직이 실행이 된 경우 이력을 남기는 부분, 특정 로직이 완료된 경우 서버에 프로토콜을 넘기는 경우 매번 동일한 공통 로직을 적어줘야되는 부분이 생겼다. 나처럼 특정 로직이 완성된 경우에 공통로직이 발생하는 경우도 있겟지만, 로직의 시작전, Exception이 떨어진 경우등 특정 시점에 적용시키는 것도 가능하다. ⚡ Spring Boot AOP (Aspect Oriented Programming) 측면 / 양상 지향적인 프로그래밍 관점 지향 프로그램이다. 중복된 코드를 떼어내서 분리하고 각각의 Method가 자신의 일에만 집중하게 해준다. 쉽게 설명하면 핵심 로..
HaeTae
'Spring Boot' 태그의 글 목록 (2 Page)