Spring RestTemplate
📘 Backend/Spring2023. 10. 1. 21:16Spring RestTemplate

📘 Spring RestTemplate 참고한 블로그 HTTP 프로토콜을 사용하여 Rest API에 쉽게 액세스 할 수 있게 해주는 스프링 프레임워크의 클래스입니다. GET, POST, PUT, DELETE 등의 HTTP Method를 지원하며, 서버로 부터 응답을 받을때 JSON, XML등 다영한 포맷 형식을 지원합니다. WebCllient vs RestTemplate WebClient는 Web Flux에서 제공하는 Reactor를 이용한 비동기 & 논블로킹 방식을 사용하여 데이터를 주고 받는 반면, Spring WebClient와 비교하여 차이점이 있다면, RestTemplate는 HTTP 요청에 대해 동기식 & 블로킹하여 데이터를 주고 받습니다. 📘 HTTP Request & Response에 대한..

Intergration Spring Bean & Akka Actor
📘 Backend/Spring2023. 9. 28. 19:55Intergration Spring Bean & Akka Actor

📘 Akka Actor Akka Actor는 동시성 모델을 기반으로 하는 어플리케이션 프레임워크 입니다. 이번 진행중인 프로젝트에서, JVM에 여러 Thread가 동시에 작업하는 분산 어플리케이션을 Actor Model을 기반으로 단순화하기 위함과 데이터의 실시간성, 고성능이 요구되는 백엔드 설계를 위해 사용하게 되었습니다. Actor Model의 특징 액터들은 상태를 공유하지 않습니다. 액터들 간의 통신은 메시지 전달을 통해서 이루어 집니다. (이벤트 기반 모델) 액터간의 통신은 비동기로 이루어 집니다. 각 액터는 전달받은 메시지를 큐에 보관하며, 메시지를 순차적으로 처리합니다. 액터는 일종의 경량 프로세서 입니다. Akka 프레임워크는 Scala로 작성되었으므로 Java 기반의 어플리케이션에서 완벽하..

Spring ehCache & DevTools
📘 Backend/Spring2023. 9. 28. 18:32Spring ehCache & DevTools

📘 Spring ehCache Spring에서 간단하게 사용할 수 있는 Java기반 오픈소스 캐시 라이브러리 입니다. redis나 memcached같은 캐시 엔진들도 있지만, 저 2개의 캐시 엔진과는 달리 ehcache는 Daemon을 가지지 않고 Spring 내부적으로 동작하여 캐싱 처리를 합니다. 따라서 redis같이 별도의 서버를 사용하여 생길 수 있는 네트워크 지연 혹은 단절같은 이슈에서 자유롭고, 같은 로컬 환경 일지라도 별도로 구동하는 memcached와는 다르게 ehcache는 서버 어플리케이션과 라이프사이클을 같이 하므로 사용하기 더욱 간편합니다. Ehcache의 2.x 버전과 3 버전의 차이는 큽니다. 3 버전 부터는 javax.cache API(JSR-107)와의 호환성을 제공합니다. ..

Spring Batch (Kotlin)
📘 Backend/Spring2023. 6. 20. 19:56Spring Batch (Kotlin)

📘 Spring Batch Spring Batch를 사용하게 된 계기는 회사의 csv 파일 내부의 데이터를 DB로 이전하기 위해 알아보게 되었습니다. 배치(Batch)는 일괄처리 란 뜻을 가지고 있습니다. 만약 대용량의 파일을 DB에 저장하는 기능이 필요하다고 가정해봅시다. 이렇게 큰 데이터를 읽고, 가공하고, 저장한다면 해당 서버는 순식간에 CPU, I/O 등의 자원을 다 써버릴 것입니다. 그리고 이 집계 기능은 하루에 1번 수행되고,이를 위해 API를 구성하는 것은 너무 낭비입니다. 바로 이런 단발성으로 대용량의 데이터를 처리하는 애플리케이션을 배치 애플리케이션이라고 합니다. 스프링에서는 Spring Batch를 통해 배치 애플리케이션을 사용할 수 있습니다. Spring Batch 5.0 변경사항 S..

JPA Value Type
📘 Backend/Spring2023. 4. 4. 14:19JPA Value Type

📘 JPA 데이터 타입 분류 JPA의 데이터 타입에는 엔티티 타입과 값 타입이 있다. 값 타입의 종류 기본값(Primitive, Wrapper, String) 임베디드(복합 값 타입) 값 타입 컬렉션 Entity Type @Entity로 정희 하는 객체이며, 데이터가 변해도 식별자로 지속적인 추적이 가능하다. ex: 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식이 가능하다. Value Type int, Integer, String 처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체이다. ex: 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체된다. 생명주기를 엔티티에 의존하며, 식별자가 없고 값만 있으므로 변경 시 추적이 불가능하다. 값 타입은 공유하면 안된다. (Side Effect ..

Proxy & Fetch & Cascade & Orphan
📘 Backend/Spring2023. 4. 4. 14:17Proxy & Fetch & Cascade & Orphan

📘 Proxy em.find() DB를 통해서 실제 엔티티 조회 em.getReference() DB조회를 미루는 프록시 객체 조회 find() 와 getReference() find()를 했을땐 정상적인 select 쿼리가 나갔지만 getReference()를 했을때 getId를 조회를 하면 Select 쿼리가 안나간다. 왜냐하면 Member의 Id는 파라미터로 들어온 값을 사용하기 때문에 프록시 객체의 초기화가 안됨. findMember2.getUsername()을 했을때 비로소 DB의 정보를 가져와야 하므로, getUsername()을 했을떄 Select 쿼리가 나간다. 즉, 프록시 객체에 없는 정보를 호출하면 객체가 초기화 되면서 DB의 정보를 조회한다. // Member findMember1 =..

Relation Mapping & Mapped Super Class
📘 Backend/Spring2023. 4. 4. 14:14Relation Mapping & Mapped Super Class

📘 Entity 연관관계 설정 JPA의 목적 - 객체지향 프로그래밍과 데이터베이스 사이의 패러다임 불일치 해결 연관관계 정의 규칙 방향 : 단방향, 양방향 (객체 참조) 연관관계의 주인 : 양방향일 때, 연관관계에서 관리 주체 다중성 : 1:1, 1:N, N:1, N:M 단방향, 양방향 DB 테이블은 외래키 하나로 양쪽 테이블 조인이 가능하지만 객체는 참조용 필드가 있는 객체만 참조가 가능하다 그렇기 떄문에 두 객체 사이에 하나의 객체만 참조용 필드를 가지면 단방향, 각각 참조 필드를 가지고 있으면 양방향 관계다 JPA를 사용하여 DB와 패러다임을 맟추기 위해서 객체는 연관관계를 잘 선택해야 한다 선택은 비즈니스 로직에서 두 객체가 참조가 필요한지 여부를 고민해보면 됨 board.getPost()처럼 참..

image