백엔드 개발하며 작성한
엔티티 연관관계 (식별/비식별, Cardinality, 선택/필수)
엔티티 간 연관관계를 얘기할 때에는, "엔티티 간 식별 관계" 와 "엔티티 간 연결되는 개체 수", "선택/필수 관계"를 이용해서 관계를 정의할 수 있다. 1. 부모, 자식 관계가 있는 엔티티 간 식별 여부를 정의하는 "식별 관계"2. 관계가 있는 엔티티 간 하나의 엔티티에서 다른 엔티티에 몇개의 개체와 대응되는 갯수를 의미하는 "Cardinality"3. 대응되는 개체의 필수 여부를 정의하는 "선택/필수 관계" 식별 관계와 비식별 관계먼저 엔티티 간 식별 관계이다.식별/비식별 관계는, 자식 개체가 부모 객체 없이도 식별될 수 있는지, 부모 객체 없이는 식별될 수 없는지를 의미한다. 식별 관계자식 엔티티가 부모 엔티티의 식별자 (PK)를 본인의 식별자 (PK)로 사용하거나복합키일 경우, 자신의 식별자에 ..
Spring Boot에서 비동기 처리 구현 (@Async, @EnableAsync)
비동기적인 방식은A가 B에게 작업을 요청하고, B의 작업이 실행되는 것과 상관없이 A 자신의 작업을 이어서 진행하는 방식을 의미한다.동기/비동기에 대한 구체적인 설명은 아래 글에 정리하였었다. 동기/비동기(Sync/Async), Blocking/Non-Blocking시작하기에 앞서, 간단히 기준이 되는 용어를 보겠습니다.Blocking/Non-Blocking : '제어권'을 두고 구분동기/비동기 : 결과값을 기다리느냐로 구분 1. Blocking VS Non-Blocking : 제어의 관점요청한 작업이 전thisisprogrammingworld.tistory.com Spring Boot에서는 몇개의 애노테이션 설정만으로 비동기 방식을 구현할 수 있도록 제공한다.- @EnableAsync, @Async 이..
Cookie (feat. JWT Token, SSO)
단일 서비스의 사용자 인증 기능을 위해 동작하던 "사용자 인증 애플리케이션"에서다수 서비스의 사용자 인증 기능을 제공하는 서버로 동작해야함과 동시에해당 서버를 통해 인증된 사용자는 사내 다른 서비스에 접속시에도 로그인 상태를 공유해야했기 때문에 SSO 기능까지 가능하도록 구현해야했습니다. 어떤 방식으로 구현할 지 고민한 내용 중 JWT 토큰을 저장할 위치와 관련하여 "쿠키" 에 대해 알아본 내용들을 정리합니다. SSO 기능을 제공하려면 크게 두가지 요구사항이 있었습니다.1) 로그인 후, 새 탭에서 접속했을 때에도 로그인이 되어야 한다.2) 서브 도메인이 같으면 인증 토큰이 공유되어야 한다. (단, 다른 서브 도메인에 접속 시에는 쿠키가 전달되지 않는다.) 기존 "사용자 인증 애플리케이션"은 사용자 인증 ..
예외(Exception) 처리
적절한 예외 핸들링은 애플리케이션에 필수적이지만 생각보다 중요성을 간과할 수 있는 부분이라 생각합니다.이 글에서는 예외를 다룰 때마다 고민했던 포인트들과 예외를 처리하고 생성하는 Best Practice에 대해 정리합니다.1) 예외 처리 (Handling Exceptions) 할 때메서드가 에러로 인해 완료되지 않았을 때 상태를 복구한다.메서드에서 예외가 발생했을 때, 호출자는 부작용이 없다고 가정할 수 있어야 합니다. 계좌 이체 코드 (한 계좌에서 출금하고 다른 계좌에 입금하는 코드)를 예로 들면,출금 로직은 정상적으로 성공했는데 입금 로직에서 예외가 발생하면, 출금이 그대로 완료되지 않도록 해야 합니다. 이를 위해 처리할 수 있는 방안은, 입금 거래 과정 중 한 곳이라도 예외가 발생하면 그전에 정상적..
[Spring Batch] 1. 스프링 배치 공부 순서와 간단 소개
기록 순서 1. 스프링 배치 소개 (탄생 배경, 적용 가능한 task, 아키텍처) 현재 글 2. 스프링 배치 시작 (스프링 배치 플젝 + 의존성 구성, 간단한 실습_job 구성+실행) 3. 스프링 배치 도메인 이해 (job, step, 등 각 도메인에 대한 이해_특징,기능,정의) 🌟🌟🌟 4. 스프링 배치 실행 (완성된 job 실행, 도메인 간 상호관계 및 흐름 파악) 체계적&유연한 배치 모델 구성 4. 아키텍처 Application 스프링 배치 프레임웍을 통해 개발자가 만든 배치 Job과 커스텀 코드 포함되어 있다. Batch Core Job을 실행, 모니터링, 관리하는 API로 구성 JobLauncher, Job, Step, Flow 등 Batch Infrastructure Application, Ba..
Spring Framework와 Spring Boot
이번 포스팅에서는 Spring Framework와 Spring Boot 에 대해 알아보겠습니다.💡 Spring Framework가 뭐야?Spring Framework는 자바 애플리케이션 개발을 위한 오픈소스로 공개된 애플리케이션 프레임워크입니다.Spring 이 등장함으로 인해 개발자들이 기술을 사용하기 위해 불가피하게 작성해야했던 복잡한 코드들을 걷어내주었고, 이로 인해 코드의 복잡성을 낮춰주었다고 합니다. 더보기Framework ?프레임워크란, 어떠한 목적을 쉽게 달성할 수 있도록 해당 목적과 관련된 코드의 뼈대를 미리 만들어둔 것을 의미한다.애플리케이션 프레임워크는 애플리케이션을 개발하는데에 있어 필요한 모든 업무 분야 및 기술과 관련된 코드들의 뼈대를 제공합니다. Spring Framework의 ..