전체 글

트랜잭션이란?DBMS가 데이터베이스를 다룰 때 사용하는 작업 단위이다.DB에서의 작업 단위 의미데이터를 다룰 때 장애가 일어나는 경우가 있는데, 트랜잭션은 장애 발생 시 데이터를 복구하는 작업의 단위가 된다.여러 작업이 동시에 같은 데이터를 다룰 때가 있는데, 트랜잭션은 이 작업을 서로 분리하는 단위가 된다. 데이터베이스에서의 트랜잭션데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위를 말하며,쿼리를 사용하여 접근할 수 있고 여러 개의 쿼리들을 하나로 묶는 단위를 말한다.  트랜잭션 필요 상황콘서트 티켓을 예약하는 상황에서 여러 사용자가 동시에 예약을 시도할 수 있으며,특정 자리가 이미 예약되었다면 다른 사용자가 그 자리를 예약할 수 없어야 한다.즉, 예약과 예약 실패하는 과정을 묶을 때 필..
ERD데이터베이스 구출할 때 가장 기초적인 뼈대 역할을 하며, 테이블 간의 관계들을 정의한 것. 엔티티(Entity)정의 가능한 사물 또는 개념을 의미한다.데이터베이스의 테이블이 엔티티로 표현된다.속성(Attribute)엔티티가 가지는 특징이나 정보를 표현하는데 사용되는 요소.도메인(Domain)속성의 값, 타입, 제약사항 등에 대한 값으 범위를 표현하는 것. 엔티티 분류엔티티는 저장하는 데이터 정보 주제에 따라 종류가 나뉜다.유무형에 따른 분류1. 유형 엔티티현실 세계에서 물리적으로 존재하는 개체를 나타내는 엔티티.ex) 사람, 자동차, 동물 등등.2. 개념 엔티티실제로 존재하는 개별적인 사물이나 사건이 아니라, 개념적인 요소를 나타내는 엔티티.데이터 모델링에서 개념적인 부분을 표현하거나 분류하기 위해..
데이터베이스 무결성무결성?DB 내의 데이터가 정확하고 일관되며 유효한 상태를 유지하는 것을 보장하는 규칙과 제약 조건. 개체 무결성기본키를 구성하는 속성은 null값을 가질 수 없다.기본키를 구성하는 속성은 다른 레코드와 중복될 수 없다.참조 무결성 외래키를 구성하는 속성은 참조 테이블의 기본키 값과 동일해야 한다.도메인 무결성 속성값은 속성이 정의된 도메인의 범위를 벗어날 수 없다최소성과 유일성최소성키를 구성하는데 여러 속성을 묶어서 키로 지정할 수 있다.이 때 키를 구성하는 최소로 필요한 속성들로만 키를 구성하는 성질.유일성하나의 키값으로 레코드를 식별할 수 있는 성질.레코드가 여러 개 존재할 때 각각의 레코드는 유일해야 하며 레코드를 구분할 수 있는 속성이 필요하다.Key키(Key)는 데이터베이스에..
프록시 패턴 특정 객체로의 접근을 제어하는 대리인(특정 객체를 대변하는 객체)을 제공합니다. 즉, 진짜 객체를 보호하기위해 가짜 객체를 노출하여 진짜 객체의 보안을 강화하는 패턴입니다. 특징 클라이언트가 실제 객체에 직접 접근하는 것을 제어할 수 있습니다. 필요한 시점에 실제 객체를 생성하거나 초기화하는 등의 지연 로딩을 구현할 수 있습니다. 장점 객체에 대한 직접적인 접근을 제한하고 특정 권한이나 보안을 강화할 수 있습니다. 필요한 경우에만 객체를 생성하고 초기화하여 자원을 효율적으로 활용할 수 있습니다. 단점 코드의 구조가 더 복잡해질 수 있습니다. 지연 로딩으로 인해 성능 저하가 될 수 있다. 지연 로딩을 위해 로딩이 필요한 순간까지 프록시를 유지해야 하므로 추가적인 메모리 사용량이 발생할 수 있고..
· 스프링
스프링 시큐리티를 처음 빌드하고나서 페이지에 접근을 하게되면 이러한 로그인 창이 뜬다. 시큐리티를 사용하기 전에는 뜨지 않았고 내가 따로 설정하지 않았는데 갑자기 뜨는 이유가 뭘까? 스프링 시큐리티에서는 보안 설정을 쉽게 사용할 수 있도록 여러 가지 기본값을 제공합니다. 그 중에서 직접 재정의를 하지 않으면 SpringBootWebSecurityConfiguration 클래스에 있는 defaultSecurityFilterChain의 기본 설정을 따라갑니다. (SpringBootWebSecurityConfiguration 클래스는 스프링 부트에서 자동으로 제공되는 클래스 중 하나입니다.) 첫 줄을 보면 http.authorizeHttpRequests((requests) -> { ((AuthorizeHttp..
컴포지트 패턴 객체를 트리구조로 구성해서 부분-전체 계층구조를 구현합니다.컴포지트 패턴을 사용하면 클라이언트에서 개별 객체와 복합 객체를 똑같은 방법으로 다룰 수 있습니다. 즉, 단일객체와 집합객체를 하나의 동일한 방법으로 처리하기 위한 패턴입니다. 특징 컴포지트 패턴은 객체들을 부분-전체 계층 구조로 구성합니다. 새로운 객체를 추가하거나 구조를 변경해도 클라이언트 코드를 수정할 필요가 없습니다. 복합 객체와 개별 객체를 대상으로 똑같은 작업을 적용할 수 있어 구분할 필요가 없어진다. 장점 일관성 있는 인터페이스를 제공합니다. 시스템이 유연하고 확장 가능합니다. 단점 특정한 복합 객체에 특화된 메서드를 호출하기 어려울 수 있습니다. 일부 상황에서는 설계가 복잡해질 수 있습니다. ex) 실제로 구분하여 처..
반복자 패턴 컬렉션의 구현 방법을 노출하지 않으면서 집합체 내의 모든 항목에 접근하는 방법을 제공합니다. (여기서 말하는 집합체란 동일한 형태의 데이터 항목을 여러개 가지고 있는 것을 말합니다.) 즉, 반복자 패턴은 집합체를 쉽게 순회하고 접근할 수 있도록 하는 디자인 패턴입니다. 특징 집합체의 구현을 외부에 노출하지 않고, 반복에 필요한 인터페이스만을 제공하여 캡슐화를 강화합니다. 장점 유연성과 확장성 : 집합체의 구조를 바꾸거나, 새로운 집합체를 추가해도 클라이언트 코드에 영향을 주지 않으면서 반복 동작을 구현할 수 있습니다. 단일 책임의 원칙 : 집합체의 관리와 반복에 대한 책임이 분리되어 각각 단일 책임의 원칙을 지킬 수 있습니다. 단점 간단한 집합체에 비효율적 : 작은 규모의 경우에는 반복자 패..
· 스프링
흐름을 보기 전에 서블릿과 필터를 알아보자 1. 서블릿 JAVA 애플리케이션은 요청을 받은 후 그것을 HTTP 프로토콜로 전송한다. 브라우저들은 HTTP 프로토콜만 이해할 수 있기 때문이다. 따라서 HTTP 프로토콜을 이용해서 브라우저들은 백엔드 웹 애플리케이션에 요청을 보낼 수 있다. JAVA 애플리케이션은 HTTP 프로토콜을 이해할 수 없기 때문에 JAVA 코드와 브라우저 사이에 중개자가 존재하는데 이 중개자를 서블릿 컨테이너 or 웹 서버라고 합니다. 중재자 즉, 서블릿 컨테이너가 할 일은 브라우저로 부터 받은 HTTP 메시지를 ServletRequest object 로 변환합니다. 그리고 동일한 object를 웹 애플리케이션에 사용하고 있는 JAVA 코드 프레임워크에도 주어집니다. 브라우저에 다시..
백수왕
비전공자에서 주니어 개발자까지