본문 바로가기
반응형

전체 글71

DAO vs. Repository 영속성(Persistence) 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성을 말한다. 영속성을 갖지 않는 데이터는 단지 메모리에서만 존재하기 때문에 프로그램을 종료하면 모두 잃어버리게 된다. 때문에 파일 시스템, 관계형 테이터베이스 혹은 객체 데이터베이스 등을 활용하여 데이터를 영구하게 저장하여 영속성 부여한다. Persistence Layer 프로그램의 아키텍처에서, 데이터에 영속성을 부여해주는 계층을 말한다. JDBC를 이용하여 직접 구현할 수 있지만 Persistence framework를 이용한 개발이 많이 이루어진다. 계층 프레젠테이션 계층 (Presentation layer) - UI 계층 (UI layer) 이라고도 한다. 애플리케이션 계층 (Application la.. 2022. 5. 29.
Optimistic Locking vs. Pessimistic Locking Lock 데이터베이스에 접근해서 데이터를 수정할 때 동시에 수정이 일어나 충돌이 일어날 수 있습니다. 이러한 상황을 제어하기 위해서 트랜잭션의 격리 수준과 비즈니스 로직에 맞추어 Lock(잠금)이 필요합니다. Optimistic Lock 특징 낙관적인 : 기본적으로 데이터 갱신시 충돌이 발생하지 않을 것이라고 낙관적으로 보는 락 비선점적인: 데이터 갱신시 충돌이 발생하지 않을 것이라고 예상하기 때문에, 우선적으로 락을 걸지 않는다. 설명 DB가 제공하는 락 기능을 사용하지 않고, Application Level(JPA 등)에서 잡아주는 락입니다. version 등의 컬럼을 추가하여 여러 트랜잭션 내 하나의 데이터에 중복 업데이트를 확인합니다. DB 트랜잭션을 걸지 않기 때문에, 여러 트랜잭션이 동일 데이.. 2022. 3. 30.
Git Rebase 이해하기 포크한 저장소를 최신 원본과 동기화시키기 위해 rebase 명령어를 사용합니다. REBASE 과정 및 원리 보다 쉬운 이해를 위해 상황 순서에 맞게 번호를 붙였습니다. 1. 원본 저장소 fork 우리가 원본 저장소의 코드를 내 원격 저장소로 fork하게 되면 아래와 같은 상황입니다. 2. 내 원격 저장소 clone 그리고 이렇게 fork 한 내 원격 저장소를 로컬로 clone 하여 가지고 오면 아래와 같은 상황이 됩니다. 이와 같은 상황에서 원본 저장소에서부터 가져온 커밋들을 base라고 부릅니다. 원본 저장소와 포크를 받아온 나의 원격저장소, 그리고 클론을 받은 로컬에는 모두 같은 해시값의 커밋들로 이루어집니다. git은 base가 교체되지 않는 한, base가 같은 저장소에만 push를 할 수 있습니.. 2022. 3. 26.
스프링 필터 지난번 포스팅에서 커스텀 스프링 필터의 오류를 작성하였으니 이번 포스팅에서는 스프링 필터 구조에 대해서 자세하게 적고자 합니다. 스프링 필터에 대해서 설명하기 전, 서블릿과 서블릿 컨테이너에 대해서 간략하게 요약해보았습니다. 해당 개념이 모호하신 분들은 한번 읽고 스프링 필터에 대해서 읽어주세요. 서블릿이란 서블릿이란 Dynamic Web Page를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술이다. 웹을 만들 때 다양한 요청과 응답이 있고 이러한 요청과 응답을 간단한 메서드 호출로 처리해주는 기술이 서블릿의 역할이다. 서블릿 컨테이너란 서블릿을 담고 관리해주는 컨테이너이다. 서블릿 컨테이너는 구현되어 있는 서블릿 클래스의 규칙의 맞게 서블릿을 관리해준다. 클라이언트에서 요청을 하면 컨테.. 2022. 1. 23.
Spring Batch 개요 Spring Batch 용어 1. Job Job은 배치처리 과정을 하나의 단위로 만들어 놓은 객체이다. 배치처리 과정에서 전체 계층 최상단에 위치한다. 2. JobInstance JobInstance는 Job의 실행의 단위를 나타낸다. Job을 실행시키게 되면 하나의 JobInstance가 생성된다. 어떤 하나의 JobInstance가 실패하여 다시 실행을 시키게 되면 이 JobInstance는 실행 시점의 데이터만 처리한다. 3. JobParameters JobInstance를 구분하는 구분자이다. JobInstance에 전달되는 매개변수 역할이다. JobParameters는 String, Double, Long, Date 4가지 형식만을 지원한다. 4. JobExecution JobExecution은.. 2022. 1. 23.
Spring으로 개발하며 맞닥뜨린 CORS! 앞서, CORS에러 문제 해결방법에 대하여 설명하기 전에 CORS에 대하여 간략하게 설명하고자 합니다. 더 자세한 내용을 알고 싶다면 해당 페이지에서 확인하는 것을 추천드립니다. CORS란? 교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)는 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제입니다. 웹 애플리케이션은 리소스가 자신의 출처(도메인, 프로토콜, 포트)와 다를 때 교차 출처 HTTP 요청을 실행합니다. 위에 나온 시나리오를 요약해보았습니다. 클라이언트(=브라우저)의 웹 컨텐츠가 'https://foo.example'이고, https://bar.ot.. 2021. 12. 8.
반응형