전체 글 41

[데이터베이스] SQL 개념, 데이터베이스 정의 방법

SQL 기본 개념 SQL 뜻 SQL이란, Structured Query Language의 약자로, 현업에서 쓰이는 relational DBMS의 표준 언어이다. SQL은 종합적인 database 언어이며 DDL, DML, VML의 모든 기능을 종합적으로 제공한다. SQL의 주요 언어 relational data model에서 표현하던 용어를 SQL 용어로 표현하면 다음과 같다. relational data model SQL relation table attribute column tuple row domain domain SQL에서 relation의 의미 SQL에서 relation은 relational data model에서의 relation과 차이가 있다. SQL에서 relation은 multiset(..

Database 2024.02.23

[데이터베이스] 관계형 데이터베이스 개념과 relation, primary key, foreign key, constraints

관계형 데이터베이스 개념 데이터베이스에서 relation이란, 수학에서 나온 개념을 의미한다. 따라서, 수학에서 의미하는 relation에 대해 먼저 알아보도록 하자. 수학에서의 relation set(집합) 서로 다른 elements를 가지는 collection으로 중복되지 않는다. 하나의 set에서 elements의 순서는 중요하지 않다. cartesian product 집합을 이용해 만들 수 있는 모든 쌍 수학에서의 relation cartesian product의 부분집합 tuple들의 set(집합) relational data model에서 relation relational data model set은 domain을 의미한다. domain은 값들의 집합이다. domain마다 이름을 붙일 수 있..

Database 2024.02.21

[데이터베이스] 데이터베이스(database) 기본 개념

데이터베이스 기본 개념 데이터베이스 데이터베이스란, 전자적으로(electronically) 저장되고 사용되는 관련 있는(related) 데이터들의 조직화된 집합(organized collection)을 말한다. 여기서 관련 있는 데이터란 같은 출처나 목적, 같은 서비스 아래에서 생성되는 데이터들을 말한다. DBMS(Database Management Systems) DBMS는 사용자에게 데이터베이스를 정의하고 관리하는 기능을 제공하는 시스템이다. 대표적인 DBMS에는 다음과 같은 것들이 있다. DB를 정의하다 보면 부가적인 데이터가 발생하게 되는데, 이러한 데이터를 metadata라 부른다. metadata metadata의 원래 의미는 데이터를 설명하기 위한 데이터이다. 예를 들어, 사진의 경우 그 해..

Database 2023.11.18

[데이터베이스] 데이터베이스 종류 및 간단 설명

데이터베이스 종류 및 간단 설명 데이터베이스의 개념을 알기 위해 데이터베이스의 종류에 무엇이 있는지에 대해 알아보자 1. Key-value Database 키와 값 형태로 데이터를 저장하는 데이터베이스이다. 너무 간단하기 때문에 서브용 DB로 많이 사용된다. 예를 들어, 이름과 나이를 저장하고 싶다면, 다음과 같이 저장한다. redis redis는 key-value 형태로 데이터를 저장하는 방식으로 많이 사용된다 데이터를 하드디스크에 저장하지 않고 ram에 저장하여 속도가 빠르다는 장점이 있다. redis 활용 메인 DB를 두고, 사람들이 자주 쓰는 데이터들을 redis에 복사해 둔다 해당 데이터가 필요할 경우, 메인 DB에 데이터를 요청하지 않고 redis에서 꺼내서 사용한다. 즉, 다음과 같이 빠른 ..

Database 2023.11.08

[스프링부트] 컨트롤러

컨트롤러란, MVC 디자인 패턴에서 C에 해당한다. 컨트롤러는 사용자의 요청을 처리하는데 사용된다. 스프링부트에서 컨트롤러를 사용하는 방법에 대해 간단히 알아보도록 하자. 그 전에, 스프링부트 서버를 띄우고, 브라우저에 http://localhost:8080 URL로 페이지를 요청하면, 다음과 같은 오류가 발생한다. 다음과 같이 Not Found (404)라는 오류가 발생하는데, 404는 HTTP 오류 코드 중 하나로 브라우저가 요청한 페이지를 찾을 수 없을 경우에 발생한다. 이는 요청한 URL(http://localhost:8080)을 스프링부트 서버가 해석할 수 없기 때문이다. 오류를 해결하기 위해서는 컨트롤러를 작성하고 URL에 대한 매핑을 추가해야 한다. 컨트롤러 "HelloController.j..

Spring 2023.11.05

[스프링부트] 스프링부트 프로젝트의 구조

스프링부트 프로젝트의 구조 스프링부트를 사용하여 프로젝트를 만들기 위해서는 프로젝트 구조를 잘 이해해야 한다. 스프링부트 프로젝트의 구조와 파일들에 대해 간단히 알아보자. src/main/java 디렉터리 src/main/java 디렉터리의 하위 패키지는 자바 파일을 작성하는 공간이다. 자바 파일로는 스프링 부트의 컨트롤러, 폼과 DTO, 데이터베이스 처리를 위한 엔티티, 서비스 파일 등이 있다. 프로젝트명 + Application.java 파일 모든 프로그램은 시작을 담당하는 파일이 있는데, 스프링부트 애플리케이션도 마찬가지이다. 스프링부트 애플리케이션에서는 "프로젝트명 + Application.java" 파일이 시작을 담당한다. 만약 스프링부트 프로젝트를 생성할 때 "Hello"라는 이름을 사용하면 ..

Spring 2023.10.19

[스프링부트] 스프링부트란 무엇인가

스프링부트란? 스프링부트(Spring Boot)는 자바의 웹 프레임워크로 기존 스프링 프레임워크(Spring Framework)에 톰캣 서버를 내장하고, 여러 편의 기능들을 추가하여 꾸준한 인기를 누리고 있는 프레임워크이다. 웹 프로그램을 쉽고 빠르게 만들어주는 프레임워크 스프링 부트는 웹 프로그램을 쉽고 빠르게 만들 수 있도록 도와주는 프레임워크이다. 웹 프레임워크 웹 프로그램을 만들기 위해서 웹 프레임워크가 없다면, 웹 프로그램을 위해 만들어야 할 기능이 정말 많다. 하지만, 웹 프레임워크를 사용하면 그런 기능들이 이미 만들어져 있기 때문에 웹 프레임워크에 있는 기능을 익혀서 사용하기만 하면 된다. 웹 프레임워크는 웹 프로그램을 만들기 위한 스타터 키트라고 생각하면 된다. 자바로 만들어진 웹 프레임워..

Spring 2023.09.28

[스프링] 스프링 핵심 원리 기본편 정리: 9. 빈 스코프

빈 스코프 빈 스코프란? 빈 스코프란, 빈이 존재할 수 있는 범위를 뜻한다. 여태까지 우리는 스프링 빈이 컨테이너의 시작과 함께 생성되어서 컨테이너가 종료될 때까지 유지된다고 학습했는데, 이는 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문이다. 스프링은 싱글톤 스코프 이외에도 다양한 스코프를 지원하는데, 이는 다음과 같다. 싱글톤: 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프 프로토타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고, 더는 관리하지 않는 매우 짧은 범위의 스코프 웹 관련 스코프 request: 웹 요청이 들어오고, 나갈 때까지 유지되는 스코프 session: 웹 세션이 생성되고, 종료될 때까지 유지되는 스코프 appli..

Spring 2023.09.13

[스프링] 스프링 핵심 원리 기본편 정리: 8. 빈 생명주기 콜백

빈 생명주기 콜백 빈 생명주기 콜백 시작 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다. 스프링을 통해 객체의 초기화 작업과 종료 작업을 어떻게 진행하는지 예제로 알아보자. 간단하게 외부 네트워크에 미리 연결하는 객체를 하나 생성한다고 가정하자. 실제로 네트워크에 연결하는 것은 아니고, 단순히 문자만 출력하도록 한다. 예제 코드 package hello.core.lifecycle; public class NetworkClient { private String url; public NetworkClient() { System.out.println("생성자 호출, url = " + url); connect();..

Spring 2023.09.08

[스프링] 스프링 핵심 원리 기본편 정리: 7. 의존관계 자동 주입

의존관계 자동 주입 다양한 의존관계 주입 방법 의존관계 주입에는 다음과 같은 4가지 방법이 있다. 생성자 주입 수정자 주입(setter 주입) 필드 주입 일반 메서드 주입 생성자 주입 생성자 주입은 생성자를 통해 의존관계를 주입받는 방법을 말하는데, 여태까지 우리가 진행했던 방법을 말한다. 특징 생성자 호출시점에 딱 한 번만 호출되는 것이 보장된다. 불변, 필수 의존관계에 사용한다. @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public Ord..

Spring 2023.09.04