분류 전체보기 33

@RequestBody와 Spring의 MessageConverter (Feat. Xss Prevent Filter)

Message Converter에 관한 문제상황 및 해결 방법에 대해 개략적인 내용을 정리한다.프로젝트에 보안을 강화하기 위해 naver에서 제공하는 lucy-xss를 적용하였으나, lucy-xss filter는 form-data 형태의 데이터를 치환하는 데 그 목적이 있다 보니 json 형태의 데이터가 정상적으로 처리되지 않는 문제가 발생하였다.구글을 여기저기 뒤져보니 Objectmapper를 커스텀한 후 Message Converter 객체를 새로 생성하여 매핑시켜주어 별도의 라이브러리 없이 특수문자 치환을 적용할 수 있는 방법이 있었는데, 이 방식은 Request Body에 대한 치환은 가능하지만 Response에 대한 처리는 할 수 없다는 문제가 있었다.https://jojoldu.tistory...

development/spring 2024.09.09

JPA 참고사항 정리

※ 참고사항 정리 1. Entity와 Dto 매핑을 위한 MapStruct(Lombok) - @QueryProjection을 사용하여 DTO에 바인딩 할 수도 있고,Lombok에서 제공하는 MapStruct을 사용하여 엔티티가 아닌 원하는 DTO에 데이터를 바인딩하도록 설정 가능 (필드 이름이 상호 일치하지 않을 경우 @Mapping 어노테이션으로 매핑 규칙 정의) 참고: https://blog.naver.com/n_cloudplatform/222957490406 2. 대량 로우 업데이트의 경우 영속성 컨텍스트(EntityManager)에서 객체를 가져와 건건이 update를 할 수 있으나 (대상건을 먼저 영속성 컨텍스트에서 조회한 후 식별자로 객체를 찾아 for문으로 건건이 처리)   영속성 컨텍스트에..

development/spring 2023.09.15

JPA 정리본

*** JPA ***    ※ JPA의 핵심 내용      1. Persistence Context - 영속성 컨텍스트      2. ORM - 객체와 관계형 DB의 매핑 (Object Relational Mapping) -> JPA는 JAVA의 ORM 표준 명세이다.   1. JPA는 인터페이스, Hibernate는 구현체이다. (Spring-data-JPA는 Spring에서 JPA를 사용할 수 있도록 프레임워크에서 제공하는 JPA) 1-1. JAVA Persistence API - 자바 진영에서 제공하는 표준 ORM 기술이다. (객체와 RDB의 릴레이션 매핑) 1-2. JPA는 스레드가 생성될 때마다 EntityManagerFactory에서 EntityManager를 생성한다.      EntityM..

development/spring 2023.09.15

[IP] 라우터와 NAT(Network Address Translation) 추가정리

안녕하세요. 예전에 VPC와 IP를 정리하면서 NAT와 IGW(Internet Gateway)에 대해서 정리한 적이 있었는데요. 제가 IGW와 NAT개념을 제대로 잡지 못해서 잘못 서술한 부분이 있었던 것 같아, 이 글에서 다시 정리하고자 합니다. 우선 NAT (Network Address Translation)의 사전적 정의는 다음과 같습니다. 네트워크 주소 변환은 컴퓨터 네트워킹에서 쓰이는 용어로서, IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술을 말한다. 출처: 위키백과 https://ko.wikipedia.org/wiki/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC_%EC%A3%BC%EC%..

devops/AWS 2023.09.11

[Java] Generic 정리

안녕하세요. 이번 시간엔 그 동안 잘 모르고 사용해왔던 자바의 제네릭에 대해 정리해보려고 합니다. ※ 제네릭(Generic) 이란? 흔히 List나 Map 객체를 사용할 때 다음과 같이 코드를 작성합니다. List myList = new ArrayList(); Map myMap = new HashMap(); ArrayList와 HashMap 클래스를 살펴보면 클래스의 정의가 다음과 같은 형태로 되어 있습니다. // ArrayList.java public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Serializable {...} // HashMap.java public class HashMap..

development/java 2023.08.02