본문 바로가기

spring & boot22

[JPA]JpaRepository 원리 및 내부 분석(EntityManager 자동주입, 상속관계) JpaRepository 원리 및 내부 분석(EntityManager 자동주입, 상속관계) 1. 서론(찾아보게된 계기) - 얼마전 QueryDsl 적용을 하던 도중, 기존에 Spring Data JPA 에서 사용하던 JpaRepository 를 extends 받는 방식과 QueryDsl 을 동시에 적용하던 도중, 대다수의 블로그나 예제에서는 QueryDsl 을 사용하는 Repository에 Entity Manaer를 적용하는 방식을 사용하고 있었다. 하지만 기존에 사용하던 JpaRepository 는 EntityManager 를 자동주입을 해주어서 extends 를 받는것만으로도 EntityManager 를 별도로 설정하지 않고 사용 할 수 있었다. 그래서 기존의 JpaRepository 의 Entity.. 2023. 8. 30.
[SpringBoot] QR코드 생성 & Test(링크이동) - zxing 1. 서론 몇년전 시작된 COVID19의 여파로 비대면, 비접촉 관련된 시스템들이 많이 생겨났다. (QR인증, QR결제 ...) 심지어 QR코드는 2000년 6월에 표준이 되었을 정도로, 오래된 기술이지만, COVID19 로 인해 사용범위, 활용성이 높아진것 같다. 더불어 옥외광고, 모바일 앱, 웹사이트 내부링크 등등 활용되는곳도 점점 많아지고, 생활에 점점더 밀접해지고 있다. 1-1. 바코드 vs QR 코드? 사실 일반인의 입장에서 보면, "바코드와 QR코드가 다른점이 뭐야? 둘다 똑같은거 아니야?" 라는 말을 하게된다. 왜 일상에서는 QR 코드를 더 많이 사용할까? 바코드 레이저(스캔물체)를 수평방향으로 인식해야 한다. 최대 20자의 정보 저장 가능. 바코드의 "I" 높이 중 일부분이 훼손되어도 인식.. 2023. 3. 24.
[SpringBoot] RestTemplate - 카카오 openAPI 연동하기(Translation, 번역기) 서론 - Spring Boot 기반의 RestTemplate 공부를 하며 local에 서버를 2개 띄워서 테스트 하는것 보다는, openAPI를 적용해보고 싶던 와중 kakao 에서 제공하는 Translate (번역) API 를 찾게 되었고 연동해보았다. - 예전에는 단순히 카카오 개발자 사이트에서, Test용 어플리케이션 등록 + Api Key로 사용이 가능했지만, 2023.03.13일 현재 kakao i cloud라는 시스템을 사용하는것으로 조금 바뀌어 있다. (호출 방식, key 같은것들이 다름.) 혹시나 하는 마음에 이전버전의 API 호출 방식을 적용해봤는데 정상적으로 동작이 되었다. 목적은 어디까지나 RestTemplate를 사용한 API호출 이었기 때문에, 예전방식으로 진행했다. * 시작전 유.. 2023. 3. 13.
[JPA] JPA N+1 문제와, 해결방법 정리 JPA N+1 문제 이번에 볼 문제는 JPA를 사용한다면 한번쯤은 들어봤고, 자주 봤을것이다. JPA N+1 문제에 대해서 알아보고 해결법에 대해서 알아보자. - N+1 문제란? 1번의 쿼리를 실행 했을 때, N번의 쿼리가 추가적으로 실행되는것을 뜻합니다. 예를들어 member를 조회 했을때 연관관계를 맺고있는 데이터를 조회 하기 위해 N번의 조회 쿼리가 실행된다고 생각하면됩니다. 일반적인 쿼리라면 join을 사용한다면, 한번의 쿼리로 데이터를 조회 할 수 있지만. JPA에서는 member를 조회하고, member가 참조하고 있는 테이블의 연관되어있는 data를 data의 갯수만큼 조회 하기 때문입니다. JPA의 경우 즉시로딩(fetchType_EAGER), 지연로딩(fetchType_LAZY)와 같은 .. 2023. 2. 21.
[Spring] Spring-Container(IoC 컨테이너)에 관리되는 Bean 목록 확인 Spring Container가 관리하는 Bean 목록 확인 하기. - Spring의 Bean은 Spring-Container(IoC Container)가 관리하고 있으며, 객체 생성, 객체 주입 같은 것들을 개발자가 아닌 Container에서 수행하게 된다. - Spring IoC, DI, Container 에 관한 개념을 좀 더 알고싶다면 아래 링크에서 공부하고 와도 좋을것 같다. https://lucas-owner.tistory.com/39 [Spring] Spring-Container, IoC, DI, Singleton 개념 정리 목차 IoC 란? Spring Container (스프링 컨테이너) DI(Dependency Injection) 란? Singleton 패턴이란? IoC 란? IoC 란.. 2023. 2. 8.
[Spring] Spring-Container, IoC, DI, Singleton 개념 정리 목차 IoC 란? Spring Container (스프링 컨테이너) DI(Dependency Injection) 란? Singleton 패턴이란? IoC 란? IoC 란 Inversion Of Control의 약자이며, 제어의 역전 이라고 한다. 프로그래머와 프레임워크의 주체가 바뀌었다고 표현한다. 일반적인 경우라면 '개발자'가 미리 정한 순서에 따라 생성, 실행을 주도, 의도 했다면(개발자가 제어권을 가졌다.) IoC 가 등장한 이후는 객체의 생성, 생명주기, 관리까지 모든 객체에 대한 주도권을 프레임워크가 가진것이다.(프레임워크가 관리) IoC 를 통해 Application을 구성하는 객체 간의 낮은 결합도를 유지할 수 있다. IoC 의 역할을 담당하는것이 Spring Container 이다. (Sp.. 2023. 2. 8.
[JPA] 영속성 컨텍스트(Persistence Context), Entity Manager 목차 JPA 영속성 컨텍스트란? 영속성 컨텍스트(Persistence Context) Entity Manager(엔티티 매니저) Entity 생명주기 flush, 변경감지(Dirty Checking) JPA 영속성 컨텍스트란?(Persistence Context) - JPA에서 가장 중요한 개념인 영속성 컨텍스트(Persistence Context)에 대해서 알아보자. - JPA는 Entity Manager, 영속성 컨텍스트를 통해 데이터의 상태변화를 감지하고 상황에 맞는 쿼리를 수행한다. ○ 영속성 컨텍스트 (Persistence Context) Entity를 영구 저장하는 환경. JAVA 영역에서 데이터를 관리하며 DB 접근을 역할을 수행한다. 어플리케이션과 DB 사이에서 객체를 보관, 저장하는 개념.. 2023. 2. 2.
[JPA] JPA, ORM 이란 무엇인가? JPA(Java Persistence API), ORM(Object Reational Mapping) 이란 ? JPA를 공부를 하게 된다면 JPA, ORM, 영속성 컨텍스트 등 많은 용어가 나오게 된다. JPA, ORM 이란 무엇이고, 관련된 내용에 대해서 알아보자. ORM 이란? - ORM(Object Reational Mapping)은 객체 - 관계 매핑을 뜻한다. 객체와 관계형 데이터베이스(RDB)를 매핑해주는것이다. 객체 모델과 관계형 모델에는 불일치(*패러다임 불일치), 즉 차이점이 존재하게 된다. (Ex. 상속관계{객체는 상속개념이 있지만, RDB는 상속개념이 존재 하지 않는다.}) ORM은 이러한 차이의 간극을 줄여준다. 즉, OOP(객체)와 RDB(관계형 데이터베이스)를 중간에서 매핑(혹은.. 2023. 1. 31.
[SpringBoot] Swagger API 문서 자동화 간단 연동, 테스트하기(1) Swagger-ui 를 활용한 문서 자동화 - 개발한 Rest API 들의 목록을 확인하고 테스트 할 수있는 Swagger-UI를 Spring Boot 프로젝트에 연동(설정)하고    사용 하는 방법을 알아보자.   Spring Boot 3.x^ 버전에서의 적용 방법은 아래 링크를 참고하세요https://lucas-owner.tistory.com/80 [Spring boot] Spring Boot 3.x^ - Swagger 적용(2)Spring Boot 3.x 버전 Swagger 적용 Spring boot 3.x 이전 버전에서의 Swagger 적용 및 Test 관련 사항은 아래 링크에서 확인하세요! https://lucas-owner.tistory.com/28 [SpringBoot] Swagger API.. 2023. 1. 18.