spring 8

[spring] @Transactional인데 readOnly를 곁들인..

Spring을 사용하여 개발하다 보면 서비스 로직에 빠질 수 없는 것이 @Transactional 어노테이션이다. 하지만 이것에도 많은 옵션이 있다는 걸 아셨나요? 많은 것 중에 api의 성능을 높일 수도 있는 옵션은 readOnly를 알아보고자 합니다. @Transactional(readOnly = true)Spring에서 AOP를 사용하여 @Transactional을 사용할 수 있는데 여기서 위와 같이 readOnly를 true로 하게 된다면 읽기 전용으로 변경이 가능하다. 하지만 주의해야 될 점이라고 하자면 readOnly라는 옵션에서 직관적으로 알 수 있듯이 서비스 자체가 데이터를 DB에서 읽기만 하는 것에 적용을 해야 된다는 것이다. 만약 CUD 작업을 해야 되는 서비스이라면 데이터를 추가, 수..

spring 2024.12.07

[cs] Spring에서 ULID적용하기

ULID란?Universally Unique Lexicographically Sortable Identifier의 약자로 대소문자를 구분하지 않는 시간을 나타내는 10글자와 16글자의 임의의 값으로 구성한다. ULID는 앞에 타임스태프가 있듯이 생성 순서를 밀리세컨 단위로 기록할 수 있어 순서대로 정렬이 가능하다. 하지만 만약 밀리세컨까지 동일하게 생성된다는 가정을 한다면, 순서는 랜덤으로 배정된다. 또한, ULID는 Crockford’s Base32 기반으로 만들어져 (I, L, O, U)는 들어가지 않는다. 제외된 이유는 이것들은 대소문자에 의해 사람들에게 헷갈릴 수도 있기 때문에라고 한다. 논리대로라면 1ms에 2^80개를 만들 수 있다. 그러면 충돌할 가능성이 존재할까?https://medium...

카테고리 없음 2024.10.14

[cs] 싱글톤의 장점과 단점

싱글톤이란싱글톤 패턴이란 특정 클래스의 인스턴스를 1개만 생성하는 것을 보장하는 디자인 패턴 중 하나이다. 이 패턴은 생성자로 매번 생성하더라도 인스턴스를 매번 생성하는 것이 아닌 최초로 생성한 동일한 인스턴스를 계속 사용하는 패턴입니다. 만약에 spring 백엔드 개발자라면 떼고 싶어도 뗄 수 없는 디자인 패턴이자 spring을 조금 더 특별하게 만들어주는 것이라고 할 수도 있다. 싱글톤의 장점위에서 말했던 대로 처음에 생성한 동일한 인스턴스를 계속 사용하기 때문에 메모리 낭비를 예방할 수 있다.예를 들어 유저가 1초에 10, 100번의 요청을 보낸다고 가정하면 10개, 100개의 인스턴스를 생성하는 것이 아닌 이미 생성된 인스턴스(static)를 호출하여 사용해 메모리 낭비를 방지할 수 있습니다. p..

cs 2024.09.23

[spring] 스프링 시큐리티? 무슨 역할을 할까

스프링 스큐리티란spring 기반의 애플리케이션의 보안을 담당하는 스프링 하위 프레임워크'인증'과 '권한' 부분을 Filter에 따라 처리한다.Filter는 Dispatcher Servlet에 가기 전에 처리되어 URL 요청을 받지만, Intercepter는 Dispatcher와 Controller사이에 위치한다는 점에 차이가 있다.스프링 시큐리티에서 보안쪽으로 많은 옵션을 제공하기 때문에 개발자에겐 보안로직을 짜지않아도 되는 장점이 있다.인증관련된 아키텍쳐인증(Authentication) : 해당 사용자가 본인이 맞는지 확인하는 과정인가(Authorization): 인증된 사용자가 요청한 자원에 접근 가능한지 결정하는 과정 시큐리티는 기본적으로 인증 절차를 거친 후에 인가 절차로 진행된다.이런 인증과 ..

spring 2024.08.11

[JPA] 양방향 매핑과 연관관계

Spring에서 연관관계를 매핑한다고 한다면 대표적으로 단방향 또는 양방향일 텐데오늘은 둘 중에 양방향에 대해 이야기해보겠습니다.JPA 프로그래밍 책을 기반으로 작성하였습니다.양방향이란? 위에 객체 연관관계를 살펴보자면 보다시피 Member와 Team은 다대일 관계이다. 반대로 하면 일대다 관계이다.일대다는 여러 개와 연관관계를 맺기 때문에 컬렉션을 사용하여 Team.members를 List로 선언한 것을 볼 수 있다.더보기여기서 List로 컬렉션을 추가하였다고 무조건 List만 쓸 수 있는 것이 아닌 Collection, Set, Map과 같은 다양한 컬렉션을 지원하기 때문에 필요에 따라서 사용하면 된다. 테이블의 관계데이터베이스에서 테이블은 외래 키 단 하나로도 양방향으로 조회가 가능하다. 그래서 객..

JPA 2024.08.09

[spring] IoC와 DI?

백엔드 프레임워크를 Spring으로 선택한다면 안 듣고 싶어도 듣는 이야기가 있다.IoC와 DI이다.하지만 듣고 쓰고 싶지 않아도 이 개념을 알아야 Spring을 사용하고 사용할 수 있다.그래서 이번엔 IoC와 DI에 대해 알아보자! IoC(Inversion Of Controller)IoC의 풀네임은 Inversion Of Controller로 직역하면 "제어의 역전"이다.Spring에서 IoC는 Component, Configuration 및 생명주기의 고민을 해결해 주는 디자인 패턴이다.IoC 컨테이너Spring에는 객체의 생성과 의존관계를 책임지고 관리해 주는 컨테이너가 있는데 이를 IoC컨테이너라고 불린다.(IoC 컨테이너 말고도 불리는 이름은 더 있음) IoC 컨테이너는 인스턴스의 생성부터 사..

spring 2024.06.07

[spring] @Controller VS @RestController 차이점

spring에는 두 가지의 컨트롤러 정의하는 방법이 있다. 첫 번째는 Spring MVC의 컨트롤러인 @Controller가 있고두 번째는 RestfulAPI의 컨트롤러인 @RestController가 존재한다. 앞서 말한 두 컨트롤러의 차이점을 간단히 말하자면 @Controller는 View를 반환하고@RestController는 HTTP Response를 반환한다는 차이점이 존재한다. 조금 더 자세히 말하자면@Controller와 @RestController의 동작방식 위에 있는 그림이 @Controller의 동작 방식이다.보다시피 View와 View Resolver가 있는 걸 볼 수 있다. 하지만 @RestController의 동작방식은 view와 view Resolver가 존재하지 않고 그 대신..

spring 2024.04.03

[JPA] 1차 캐시란?

영속성 컨텍스트란?1차 캐시에 대해 이야기하면서 영속성 컨텍스트에 대해 말을 빼먹을 수 없다.영속성 컨텍스트란 엔티티를 영구히 저장하는 환경이라는 뜻이다.만약에 엔티티를 저장 또는 조회를 시도한다면 엔티티 매니저가 영속성 컨텍스트를 사용하여 관리한다. 여기서 말하는 영속성 컨텍스트는 우리가 개발을 하면서 본 경우가 없을 것이다. 왜냐면 여기서 말하는 영속성 컨텍스트는 논리적인 개념일 뿐이지 볼 수 있는 것은 아니다. 그리고 엔티티 매니저를 생성하면서 영속성 컨텍스트는 딱 하나 만들어진다.이제 1차 캐시에 대해 이야기할 건데 영속성 컨텍스트를 이해했다는 가정하에 이야기해 보자. 1차 캐시란?1차 캐시는 영속성 컨텍스트의 특징 중에 하나이다.영속성 컨텍스트의 특징은 이것 말고도 많지만 오늘은 1차 캐시에 대..

JPA 2024.03.05