https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-1/dashboard 스프링 DB 1편 - 데이터 접근 핵심 원리 - 인프런 | 강의 백엔드 개발에 필요한 DB 데이터 접근 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 DB 접근 기술의 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., - 강의 www.inflearn.com 김영한님의 위 강의를 바탕으로 작성하였습니다. jdbc 하지만, 각 db 마다 사용법이 다르기에, db를 변경 시, 코드도 전부 변경해야한다. jdbc 표준 인터페이스가 등장한다. jdbc: 자바에서 db에 접속 가능하도록 하는 자바 API.JDBC는 DB에 자료를 쿼리, 업데이트 하..
@Transactional 와 같이 propagation 옵션 없이 실행 시 아래의 옵션이 디폴트로 적용된다. @Transactional(propagation = Propagation.REQUIRED) 또한 readOnly 옵션 없이 실행 시, 아래의 옵션이 디폴트로 적용된다. @Transactional(ReadOnly = false) [readOnly 속성] import javax.transaction.Transactional import org.springframework.transaction.annotation.Transactional; @Transactional(readOnly=true) **주의 사항 1. org.springframework.transaction.annotation.Transac..
Caching: 동일한 요청에 대한 응답을 미리 저장해두고, 사용한다. 캐시에서 가져올 경우 속도가 비약적으로 상승( 탐색 필요 x disk에서 정보를 가져오지 않고, 메모리에서 가져오기에 Disk IO 감소) 다만 캐싱은 "일관성" 유지가 필수 적이다. 일관성: 캐시 내의 정보와 disk 내의 정보가 다르다면, 해당 캐싱 값은 "INVALID" 한 값이다. 캐싱 방법 1) 스프링 내장 캐싱 사용하기 implementation 'org.springframework.boot:spring-boot-starter-cache' @SpringBootApplication @EnableCaching public class TestApplication { public static void main(String[] ar..
대부분의 경우, 어떠한 엔티티를 가져올 때 모든 연관된 엔티티도 함께 가져오는 eager fetch 대신, 그때 그때 필요한 엔티티만 join해서 가져오는 Lazy Fetch를 사용한다. 하지만 이러한 방법에는 N+1 문제가 발생하게 된다. [N+1 문제] N+1 문제는 데이터베이스에서 데이터를 조회할 때 발생할 수 있는 성능 이슈 중 하나다. N+1 문제는 한번의 쿼리로 가져올 수 있는 데이터를 가져오기 위해 N개의 쿼리를 더 실행하는 문제를 의미한다. 예를 들어, 게시물과 댓글을 저장하는 데이터베이스가 있다고 가정해보자. 각 게시물은 여러 개의 댓글을 가질 수 있다. 이때, 게시물과 그에 대한 댓글 정보를 모두 가져와야 한다고 가정하면, 다음과 같이 쿼리를 작성할 수 있다. SELECT * FROM ..
indexing이란? 인덱스를 설정하면 해당 컬럼들의 값을 해시 맵 형태로 메모리에 저장해두고 검색할 때 메모리에서 검색을 먼저 하고 해당하는 행을 찾아 반환하지만 인덱스 생성하는데에도 비용이 들고, 데이터 수정, 추가 시마다 업데이트가 필요하기에 데이터의 추가, 수정 삭제에 대한 처리 속도가 낮아진다. 그렇기에 인덱싱으로 "유의미한" 검색 성능 향상을 만들 수 없다면, 만들지 않는 것이 좋다. 그럼 언제 인덱싱이 효과적이지 못할까? 인덱싱이 효과적이지 않은 상황 - 작은 테이블: 작은 크기의 테이블에서는 인덱스가 적용되어도 큰 차이를 만들지 못할 수 있다. 이런 경우에는 인덱스를 적용하는 대신에 테이블을 자주 스캔하는 것이 더 효율적일 수 있다. - 자주 변경되는 테이블: 자주 데이터를 추가, 수정, ..
이 글을 읽기 앞서, 관련된 OS, 네트워크 사전 지식들을 정리한 아래의 글을 보고 오면 도움이 됩니다.https://codenme.tistory.com/80 웹서버, 네트워크 관련 사전지식- 멀티 스레드 프로세스에 대비되는 장점: 1) response 속도 스레드 x 시 IO wait, block 만날때 해당 프로세스는 멈춰야함. 만약 각 스레드가 같은 프로그램의 다른 부분을 맡는다면 한 스레드가 어떤codenme.tistory.com WAS란?DB 조회 혹은 다양한 로직 처리를 요구하는 동적 컨텐츠를 제공하기 위해 만들어진 Application 서버이다. HTTP 프로토콜을 기반으로 사용자 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어로서, 주로 데이터베이스 서버와 같이 수행된다. WAS는 J..
이 글을 읽고 Nginx 설정을 시작하기에 앞서, 아래의 글을 읽고 오면 흥미가 조금 더 생길 것이다. https://codenme.tistory.com/82 Apache VS Nginx 비교분석 이 글을 읽기 앞서, 관련된 OS, 네트워크 사전 지식들을 정리한 아래의 글을 보고 오면 도움이 됩니다. https://codenme.tistory.com/80 웹서버, 네트워크 관련 사전지식 - 멀티 스레드 프로세스에 대비되 codenme.tistory.com [Nginx 의 설정 방법] 우선 별도의 ubuntu 컨테이너를 하나 만들어주자. docker run -dit -p 80:8080 --name myos ubuntu:20.04 우분투 쉘 진입 docker exec -it myos /bin/bash 쉘에 ..