본문 바로가기

Develop/Backend 가이드

[Spring] HTTP Request 를 처리하는 과정 - DispatcherServlet 원리 먼저 이 글은 Spring Web MVC 에 해당되며, Spring WebFlux 는 다른 글을 참고하시길 바랍니다. HTTP Request 를 처리하는 과정 - DispatcherServlet 원리 Spring Web MVC 에서 HTTP Request 를 처리하는 핵심 클래스가 DispatcherServlet 이란 클래스입니다. DispatcherServlet 가 무엇인지 알아야 Spring Web MVC 서버가 어떻게 동작하는지를 알 수 있습니다. 클래스 이름 중 Servlet 단어가 클래스가 어떤 역할을 하는지 설명하는 핵심적인 단어입니다. 왜냐하면 Spring Web MVC 는 Servlet API (javax.servlet) 를 기반으로 만들어진 프레임워크이기 때문입니다. Servlet 일반적..
[Spring] RDB 에서 계층적인 데이터 구조 관리 전략 - Nested set 관계형 데이터베이스에서 계층적인 데이터 구조 관리 관계형 데이터베이스 (RDB) 는 계층적인 데이터 구조를 표현하기에 적합하지 않은 관계형 모델을 기초로 설계되어 있습니다. 반면에 관계형 데이터베이스를 활용하는 서버는 주로 객체지향 언어로 작성되며 내부적으로 이진트리와 같은 계층적인 데이터 구조를 자주 활용합니다. 따라서 서버에서 그래프 구조의 데이터를 계층적인 데이터 구조 관리에 적합하지 않은 관계형 데이터베이스에 어떻게든 저장하려면 아래와 같은 전략이 필요합니다. 관계형 데이터베이스에 그래프를 표현하는 전략 4 가지 Adjacency list Nested set Path enumeration Closure table 계층적인 데이터 구조를 관계형 데이터베이스에 저장하게 되면 서버가 데이터베이스의 무결..
[Spring] RDB 에서 계층적인 데이터 구조 관리 전략 - Path enumeration 관계형 데이터베이스에서 계층적인 데이터 구조 관리 관계형 데이터베이스 (RDB) 는 계층적인 데이터 구조를 표현하기에 적합하지 않은 관계형 모델을 기초로 설계되어 있습니다. 반면에 관계형 데이터베이스를 활용하는 서버는 주로 객체지향 언어로 작성되며 내부적으로 이진트리와 같은 계층적인 데이터 구조를 자주 활용합니다. 따라서 서버에서 그래프 구조의 데이터를 계층적인 데이터 구조 관리에 적합하지 않은 관계형 데이터베이스에 어떻게든 저장하려면 아래와 같은 전략이 필요합니다. 관계형 데이터베이스에 그래프를 표현하는 전략 4 가지 Adjacency list Nested set Path enumeration Closure table 계층적인 데이터 구조를 관계형 데이터베이스에 저장하게 되면 서버가 데이터베이스의 무결..
[Spring] RDB 에서 계층적인 데이터 구조 관리 전략 - Closure table 관계형 데이터베이스에서 계층적인 데이터 구조 관리 관계형 데이터베이스 (RDB) 는 계층적인 데이터 구조를 표현하기에 적합하지 않은 관계형 모델을 기초로 설계되어 있습니다. 반면에 관계형 데이터베이스를 활용하는 서버는 주로 객체지향 언어로 작성되며 내부적으로 이진트리와 같은 계층적인 데이터 구조를 자주 활용합니다. 따라서 서버에서 그래프 구조의 데이터를 계층적인 데이터 구조 관리에 적합하지 않은 관계형 데이터베이스에 어떻게든 저장하려면 아래와 같은 전략이 필요합니다. 관계형 데이터베이스에 그래프를 표현하는 전략 4 가지 Adjacency list Path enumeration Nested set Closure table 계층적인 데이터 구조를 관계형 데이터베이스에 저장하게 되면 서버가 데이터베이스의 무결..
[Spring] RDB 에서 계층적인 데이터 구조 관리 전략 - Adjacency list 관계형 데이터베이스에서 계층적인 데이터 구조 관리 관계형 데이터베이스 (RDB) 는 계층적인 데이터 구조를 표현하기에 적합하지 않은 관계형 모델을 기초로 설계되어 있습니다. 반면에 관계형 데이터베이스를 활용하는 서버는 주로 객체지향 언어로 작성되며 내부적으로 이진트리와 같은 계층적인 데이터 구조를 자주 활용합니다. 따라서 서버에서 그래프 구조의 데이터를 계층적인 데이터 구조 관리에 적합하지 않은 관계형 데이터베이스에 어떻게든 저장하려면 아래와 같은 전략이 필요합니다. 관계형 데이터베이스에 그래프를 표현하는 전략 4 가지 Adjacency list Nested set Path enumeration Closure table 계층적인 데이터 구조를 관계형 데이터베이스에 저장하게 되면 서버가 데이터베이스의 무결..
[Spring] JPA Mapping - @ManyToMany @ManyToMany @ManyToMany 관계는 두 Entity 가 서로를 Collection 으로 가지게 되는 관계입니다. @Entity class Student { @ManyToMany(targetEntity=Course.class) Set selectedCources; } @Entity class Course { @ManyToMany(targetEntity=Student.class) Set registeredStudents; @ManyToMany 는 다른 형태로 변형할 수 있는 여지가 많은 관계입니다. @JoinTable 로 @ManyToMany 관계를 지정할 수도 있고, @ManyToOne 두 개로 관계를 변화시킬 수도 있습니다.
[Spring] JPA Mapping - @OneToMany / @ManyToOne @OneToMany / @ManyToOne @OneToMany 는 지정하는 객체는 하나이고, 연결되는 객체가 여러 개일 때 사용합니다. 연결할 때 mappedBy 속성으로 연결할 속성을 지정할 수도 있고, targetEntity 속성으로 연결할 Entity를 지정할 수도 있습니다. mappedBy 방식 @Entity @Table(name="CUSTOMER") public class Customer { @Id @GeneratedValue @Column(name="ID") public int id; // mappedBy 속성에 customer 속성을 연결한다. @OneToMany(mappedBy="customer") public Set orders; } @ManyToOne @JoinColumn(name="C..
[Spring] JPA Mapping - @OneToOne @OneToOne @OneToOne 관계를 정의하는 방법은 여러가지가 있습니다. Foreign Key 를 등록하는 방법 // Customer class @OneToOne // Foreign Key 를 참조할 곳을 지정합니다. @JoinColumn(name="record_id") public Record record; // Record class // Foreign Key 를 제공하는 속성을 지정합니다. @OneToOne(mappedBy="record") public Customer customer; Foreign Key를 제공하는 Entity와 제공받는 Entity로 생성됩니다. 제공받는 Entity는 반드시 @JoinColumn 으로 참조할 곳을 지정해줘야 하고, 제공하는 Entity는 제공받는 Ent..