백엔드 개발을 하면서 Optional이 자주 쓰인다. 기능들에 대해 잘 아는 것도 좋지만, Optional에 대해 어느 정도의 이해도를 가지고 용도에 맞게 사용하는지도 중요하다는 생각이 들어서 정리해보겠다. Optional이란?Optional은 Java8 버전부터 도입되었으며, '값이 없는 경우'를 표현하기 위한 용도로 사용되는 클래스이다. Optional 클래스는 Java 제네릭을 사용하여 만들어져 있으므로, 어떤 타입의 객체라도 값이 없을 수 있는 겨우에 Optional을 사용하여 표현할 수 있다. 그러면, Optional이 왜 만들어졌고, 어떨 때 사용하면 되는지 알아보자. Optional 사용 목적API 공식 문서에 보면 Optional을 만든 의도가 다음과 같이 적혀있다. API Note :Op..
분류 전체보기
JPA에서 제일 중요하다고 생각되는 주제중 하나이다. 실제 JPA가 동작하는것과 관련이 있고 그래서 강의를 들으면서 개념을 확실하게 정리해본다. 영속성 컨텍스트(PersistenceContext)란?영속성 컨텍스트는 엔티티를 영구 저장하는 환경이라는 뜻이다. 영속성 컨텍스트는 애플리케이션과 DB 사이에서 객체를 보관하는 가상의 DB 역할을 한다. 엔티티 매니저(EntityManager)를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리하게 된다. 엔티티 생명주기- 비영속 (new/transient) : 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태- 영속 (managed) : 영속성 컨텍스트에 관리되는 상태- 준영속 (detached) : 영속성 컨텍스트에 저..
이전에 p6spy 적용하기 글을 남겼다.[Spring Data JPA] Spring 3에 p6spy 적용하기 [Spring Data JPA] Spring 3에 p6spy 적용하기P6spy 적용 이유 - P6Spy를 사용하는 주된 이유는 스프링 부트와 JPA를 사용하는 프로젝트에서 SQL 쿼리를 정확하고 효과적으로 로깅하고 추적하기 위해서이다. P6Spy는 아래의 3가지 상황에서 사용된taek2.tistory.com이어서 sql 쿼리를 커스텀해서 가독성이 좋게 포맷하는 과정과, 로그 파일 남기기, 로그 레벨 설정에 대해 알아보겠다.p6spy Custom format1. formatter 객체 생성아키텍처에 따른 패키지에 다음 파일을 생성하고 코드를 작성한다. import com.p6spy.engine.l..
P6spy 적용 이유 - P6Spy를 사용하는 주된 이유는 스프링 부트와 JPA를 사용하는 프로젝트에서 SQL 쿼리를 정확하고 효과적으로 로깅하고 추적하기 위해서이다. P6Spy는 아래의 3가지 상황에서 사용된다.1. 쿼리 확인JPA는 매우 편리하지만 개발자가 직접 쿼리를 작성하지 않기 때문에 실제 어떤 쿼리가 실행되는지 확인하기 어렵다. p6Spy를 사용하면 이러한 쿼리를 눈으로 직접 확인할 수 있다. 특히 의도한 대로 작동하지 않을 때나 N+1 문제가 발생했는지 확인이 필요할 때 유용하다. 2. 프록시를 통한 로깅P6Spy는 기존 어플리케이션의 코드를 변경하지 않고도 데이터베이스의 데이터를 가로채고 로그를 남길 수 있는 프레임워크다. 사용자의 DataSource를 P6SpyDataSource가 감..
관계형 데이터베이스에서 계층 구조를 표현하는 4가지 주요 모델(Nested Set, Adjacency List, Materialized Path, Closure Table) 설명과 각각의 장단점을 간단하게 정리해보겠습니다. 1. Adjacency List Model(인접 리스트 모델): 각 노드가 부모 노드에 대한 참조를 포함하는 모델이다.즉, 노드는 parent_id 필드를 통해 상위 노드와 연결된다.장점1. 구현이 간단하다 - 데이터베이스 테이블 설계가 직관적이며, 부모 노드의 ID만 추가하면 되므로 별도의 복잡한 구조가 필요하지 않다.2. 삽입 및 삭제가 용이하다 - 단일 노드 삽입 및 삭제 작업이 빠르고 간단하다.3. 기본적으로 거의 모든 RDBMS에서 지원한다 - 특별한 쿼리나 저장소 구조가 ..
개요보안을 강화하기 위해 JWT를 적용해보자.JWT 토큰의 인증방식은 다음 포스팅에서 살펴보고 바로 개발해보도록 하겠다.2023.02.10 - [공부/Tech] - 인증 방식 (Cookie & Session & Token) 인증 방식 (Cookie & Session & Token)서버가 클라이언트를 인증하는 방식은 대표적으로 쿠키, 세션, 토큰 3가지 방식이 있다. 각각의 특징에 대해서 간단하게 살펴보자. 1. Cookie (쿠키) 쿠키는 Key-Value 방식으로 저장되는 문자열이다.taek2.tistory.com 기능 구현- JWT 라이브러리 추가dependencies { ... // JWT Token implementation 'io.jsonwebtoken:jjwt-api:0.11.2' r..