페이징과 페이지 테이블을 학습하면서 페이지 테이블의 크기에 대한 내용이 이해가 잘 되지 않아서 이번에 정리하게 됐다.CPU 와 메모리의 관계페이지 테이블의 크기로 들어가기 전에 CPU 와 메모리의 관계를 먼저 살펴볼 필요가 있다.32bit CPU 는 2^32 개의 메모리 주소를 표현할 수 있다. 2^32 경우의 수만큼 메모리 주소를 가리킬 수 있고 메모리 한 칸의 크기는 8bit(1byte)다.2^32 byte 는 4GB 라서 32bit CPU 로 사용할 수 있는 물리 메모리의 최대 크기가 4GB 다. 이는 이론적으로 그렇고 실제로는 Physical Address Extension 등을 통해 최대 64GB 까지 사용할 수 있다고 한다. 32bit CPU 를 사용하는 컴퓨터에서 4GB 보다 큰 8GB 메모..
이전 글에서 다루지 못했던 N+1 관련 내용들을 추가적으로 다룰 예정이다. 이번 글에서 다룰 내용은 다음과 같다.Join 과 Fetch Join 의 차이PagingMultipleBagFetchExceptionDTO엔티티엔티티는 이전 글에서 사용한 Post, Comment 엔티티를 다시 가져오되, Post 엔티티의 연관관계에 Attachment 엔티티가 추가되었다.@Entity@Table(name = "post")@Getter@NoArgsConstructorpublic class Post { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(length = 50, nullable = false) priv..
N + 1 문제란?1번의 쿼리 결과에 대한 N번의 추가 쿼리가 발생하는 문제를 나타낸다.상황별 N + 1 문제 정리쿼리를 조회하는 다양한 상황이 있을 수 있다. 다대일 관계에서 조회를 할 수 있고, 반대로 일대다 관계에서 조회를 할 수 있다.연관관계 엔티티의 글로벌 패치 전략이 Eager 일 수도 있고 Lazy 일 수도 있다.엔티티 전체를 조회할 수도 있고, 단일 엔티티를 조회할 수도 있다.조회를 할 때 Spring Data JPA 를 사용할 수도 있고, Hibernate 를 사용할 수도 있다.fetch join 을 사용할 수도 있고, 사용하지 않을 수도 있다.이번 글에서는 이러한 상황별로 조회 쿼리를 실행했을 때 어떠한 결과가 나타나는지 정리해보려고 한다.글로벌 페치 전략연관관계의 엔티티를 조회하는 시..

Controller 란In Spring’s approach to building web sites, HTTP requests are handled by a controller. You can easily identify the controller by the @Controller annotationIn Spring’s approach to building RESTful web services, HTTP requests are handled by a controller. These components are identified by the @RestController annotationcontroller 는 스프링에서 HTTP 요청(과 응답, 예외 등)을 처리한다. controller 임을 나타내기 위해 ..
HTTP Messages 란HTTP Messages 는 서버와 클라이언트 간의 데이터가 전송되는 양식이다.HTTP Messages 의 종류HTTP Messages 는 requests, responses 2가지로 나뉜다.requests 는 클라이언트가 서버로 보내는 것으로 서버가 어떤 행위를 하도록 한다.responses 는 클라이언트의 요청에 대한 서버의 응답이다.HTTP Messages 의 구성HTTP Messages 는 start-line, HTTP headers, body 3가지로 구성된다.HTTP headers, body 는 optional 하다.start-linerequests 는 서버에게 요청할 내용을 담고, response 에는 request 의 성공여부를 담는다.반드시 한 줄로 이루어진다...
정수란수학에서 정수는 양의 정수, 음의 정수 및 0으로 이루어진 수의 체계이다. 또는 자연수, 자연수의 음수 및 영을 통칭하는 말이다.n이 0 또는 자연수일 때, n + x = 0 만족하는 모든 x, 모든 n을 통틀어 '정수'라고 한다. 컴퓨터에서 정수를 표현하는 방법컴퓨터는 정수를 2진법으로 표현한다. n 개의 비트(bit)로 2^n 개의 정수를 표현할 수 있다.컴퓨터에서 정수를 표현하는 방법은 부호없는 정수(Unsigned Integer), 부호있는 정수(Signed Integer) 2가지로 나뉜다. 부호없는 정수는 0 또는 양의 정수를 표현한다.부호없는 정수는 0, 양의정수 또는 음의정수를 표현한다.그런데 비트에는 +, - 와 같은 기호가 없고 0, 1만 있을 뿐이다. 비트로 어떻게 음수를 나타낼 ..
name vs referencedColumnName엔티티 필드에 연관관계를 설정할 때 @JoinColumn 어노테이션을 사용할 수 있다.@JoinColumn 의 속성 중 name 과 referencedColumnName 가 혼동돼서 정리해두려고 한다.두 속성은 외래키와 연관이 있다. 외래키는 한 테이블에서 다른 테이블의 행을 식별하기 위해 사용한다.nameThe name of the foreign key column.자신의 테이블에 선언한 외래키 컬럼명이다.다른 테이블의 행을 식별하기 위해 해당 테이블에 선언한 외래키의 컬럼명을 뜻한다.referencedColumnNameThe name of the column referenced by this foreign key column.참조하는 테이블에 선언된 ..
IP 주소 IP 주소에서 IP 는 Internet Protocol 을 나타낸다. Internet Protocol 은 네트워크간에 이동하는 패킷 단위로 나눈 네트워크 데이터를 정확한 목적지로 보내기 위한 규약이다. IP 주소는 Internet 에 연결된 모든 기기가 갖는 고유한 식별자다. IP 주소는 네트워크 ID (Network ID) 와 호스트 ID (Host ID) 로 구성된다. 네트워크 ID 가 네트워크 대역이라면 호스트 ID 는 같은 네트워크 대역을 공유하는 기기 하나라고 볼 수 있다. IP 클래스와 CIDR IP 주소는 IPv4, IPv6 2가지 종류가 있다. IP 클래스는 IPv4 주소에서 존재하는 방식이고 1993년부터는 CIDR 로 대체됐다. IPv4 주소는 32비트의 이진수로 구성되어 있..