본문 바로가기
728x90

전체보기37

[JPA] 영속성 컨텍스트 영속성 컨텍스트 영속성 컨텍스트는 EntityManagerFactory에 의해 하나의 요청(Thread)마다 EntityManager가 생성되고 EntityManager 안에서 사용하는 저장 공간이 바로 영속성 컨텍스트 입니다. JPA에서 영속성 컨텍스트는 한 Transaction 내에서 DB에 저장한 Entity와 DB에서 조회한 Entity를 영속성 컨텍스트에 저장하여 사용하기 때문에 성능을 이끌어주는 중요한 역할을 합니다. 1. 영속성 컨텍스트의 특징 1-1. 1차 캐시 영속성 컨텍스트는 저장 공간으로 한 Transaction 내에서 DB에 저장한 Entity와 DB에서 조회한 Entity를 Transaction이 끝날 때까지 1차 캐시에 저장합니다. 1차 캐시에 저장된 Entity들은 find 메.. 2023. 7. 9.
[Spring] @Value와 @ConfigurationProperties @Value와 @ConfigurationProperties @Value와 @ConfigurationProperties는 외부 설정 값들인 Property들을 주입받아 사용할 수 있게 해주는 어노테이션입니다. 굳이 Java 내부에서 직접 사용하지 않고 외부 설정 파일에 있는 Property 값들을 주입받아서 사용하는 이유는 크게 2가지 이유가 있습니다. 관리하기 편하다. 특정 값(value)이 여러 곳에서 사용할 경우 관리하기 편리해집니다. 예를 들어 실행 환경, 서버 설정 값, 중요 key값들을 예로 들 수 있습니다. Property의 값만 변경하면 사용하는 곳에도 적용되어 유지보수가 용이해집니다. 중요한 정보를 노출시키지 않는다 특정 API들을 사용하기 위해서는 누구인지 식별하기 위한 API key가 .. 2023. 7. 9.
[Spring] Bean Validation과 Custom Validation Bean Validation 클라이언트의 요청 값에 대한 유효성 검사로 잘못 입력된 값에 대한 처리를 할 수 있는 유효성 검사 표준 기술입니다. 개발을 진행하다 보면 특정 요청 값이 필수(null, 빈문자 제외), 최소 문자열 길이, 최소 값, 최대 값 등 필요한 데이터 검증이 필요할 때가 있는데 Bean Validation은 일반적으로 많이 사용하는 제약 조건들이 제공하기 때문에 쉽게 어노테이션으로 유효성 검사를 할 수 있도록 도와줍니다. 만약 Bean Validation을 사용하지 않으면 어떻게 될까요? 위 이미지에서 볼 수 있듯이 Bean Validation을 사용하지 않으면 요청 값에 대한 Validation Code를 비즈니스 로직에서 찾아야 하는 문제가 발생합니다. 만약 코드 컨벤션이 정해져 .. 2023. 7. 8.
[Spring] HTTP 요청 데이터 바인딩(@RequestParam, @ModelAttribute, @RequestBody, @RequestHeader) HTTP 요청 데이터 바인딩 클라이언트가 서버로 요청을 보낼 때는 일반적으로 요청에 필요한 데이터를 path parameter, request variable, body, header 등에 실어서 요청합니다. Spring에서는 요청 데이터를 바인딩할 수 있는 어노테이션들을 제공하는데 주로 사용하는 어노테이션은 @PathVarible, @RequestParam, @RequestBody, @ModelAttribute, @RequestHeader 등이 있습니다. 1. 경로 변수(Path Variable) 바인딩 @Target(ElementType.PARAMETER) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface PathVariable { .. 2023. 7. 2.
728x90