Spring Data 페이징 스프링 데이터는 JPA 쿼리 메소드에 페이징과 정렬 기능을 사용할 수 있도록 2가지 특별한 파라미터를 제공한다. org.springframework.data.Sort : 정렬기능 org.springframework.data.Pageable : 페이징 기능 (Sort 포함) Page 타입 Page 메소드는 페이징 기능을 제공하기 위해 검색된 전체 데이터 컨수를 조회하는 count 쿼리를 추가로 호출한다. // count 쿼리 사용 Page findByName(String name, Pageable pageable); // count 쿼리 사용 안 함 List findByName(String name, Pageable pageable); 페이지 조건 걸기 PageRequest p..
ORM에서의 객체 연관 매핑 연관 관계의 핵심 키워드 방향 매핑 방식에는 크게 단방향 / 양방향 방식이있다. 단방향 한쪽 방향으로의 접근이 가능한 매핑으로 회원 -> 팀 혹은 팀 -> 회원 방식 양방향 양방향 으로의 접근이 가능한 매핑으로 회원 팀 서로의 객체를 참조하는 방식이다. 단, 이러한 관계는 객체 관계에서만 가능하고 테이블 관계는 항상 양방향 상태이다. 다중성 다대일 / 일대다 / 일대일 / 다대다 연관관계 주인 객체를 양방향 연관관계로 만들면 연관관계의 주인을 정해야한다. 테이블과 객체의 연관관계 차이 객체 객체는 필드(멤버변수)로 팀 객체와 연관관계를 맺는다. 테이블 테이블은 외래 키로 연관관계를 가진다. 여기서 확인해야 할 것은 테이블은 외래키를 가지게 된다면 자동으로 양방향 테이블을 가지..
준영속 상태의 지연 로딩 문제를 해결 영속성 컨텍스트 전략을 기본으로 사용하는 스프링에서는 트렌잭션이 Service 계층에서 시작하여 끝나는 시점에서 영속성 컨텍스트 또한 함께 종료된다. 준영속 상태에서는 변경감지와 지연로딩이 되지 않는다. 준영속 상태의 지연로딩 View 계층에서 엔티티를 사용할 경우 관련된 엔티티도 함께 사용해야 하는데 만일 초기화 되지 않은 프록시를 준영속 상태에서 호출할 경우 문제가 발생한다. 이러한 문제를 해결 하기 위해 JPA는 두 가지 방식을 제안하고 있다. 뷰가 필요한 엔티티를 미리 로딩해 두는 방법 OSIV를 사용하여 엔티티를 항상 영속 상태로 유지하는 방법 뷰가 필요한 엔티티를 미리 로딩해 두는 방법 글로벌 페치 전력 수정 JPQL 페치 조인 강제 초기화 A. 글로벌 페..
상속 관계 매핑 관계형 데이터베이스에는 객체지향 언어에서 다루는 상속이라는 개념이 없다. 대신에 슈퍼타입 서타타입 관계라는 모델링 기업이 객체의 상속 개념과 가장 유사하다. 슈-서 논리 모델 테이블 구현 슈퍼타입-서브타입 논리 모델을 실제 모델인 테이블로 구현할 때는 3가지 방법이 있다. 각각의 테이블로 변환 (조인 테이블 전략) 각각을 모두 테이블로 만들고 조회할 때 조인을 사용한다. 통합 테이블로 변환 (단일 테이블 전략) 테이블을 하나만 사용해서 통합한다. 서브타입 테이블로 변환 (구현 클래스 테이블 전략) 서브 타입마다 하나의 테이블을 만든다. 1. 조인 테이블 전략(InheritanceType.JOINED) 엔티티 각각을 모두 테이블로 만들고 자식 테이블이 부모 테이블의 기본 키를 받아서 기본 ..
Nginx 로드 밸런싱 방식 로드 밸런싱은 개발자의 의도에 따라 분배 방식을 지정할 수 있다. 아래 실험은 개발자 Emre Ceylan님의 자료를 참고했다. RR(라운드- 로빈) 기본으로 사용된다. 서버에 고르게 분배하는 방식 사용자가 가중치를 부여할 수 있다. ip_hash Hashing 되어진 IP주소를 Key로 사용 결정된 IP는 항상 동일 인스턴스를 이용하게 된다. least_conn 가중치에 따라 접속수가 적은 수를 분배 현재 사용중인 서버중 연결 수가 가장 적은 서버로 요청합니다. hash 해시값으로 분배하는 알고리즘 least_time 연결수가 적으면서 평균음답 시간이 가장 적은 쪽을 선택하여 분배 RANDOM 무작위 분배 Reference Nginx web server를 이용한 로드 밸런싱..
이미시 build 시 생성되는 image Docker 개발시 자주 볼 수 있는 이미티 형태로 개발자의 코드가 잘못된 것이 아닌 Docker 자체의 부산물이다. Docker 이미지 파일 시스템과 이미지 계층의 구성 방식 각각의 도커 이미지는 레이어로 구성되며 이러한 레이어는 서로 부모-자식 계층관계를 가진다. 이러한 이미지는 /var/lib/docker/graph 에 저장되고 때문에 도커에서는 graph database라고 말한다. 작업한 Dockerfile을 pull, build 시 동일 이미지 Name이 존재할 경우 이미지 중복을 피하기 위해 기존의 이미지와 태그를 으로 변경하고 자식 계층으로 새로운 이미지를 빌드 하게 되는 것이다. Docker 에서는 이렇게 버려진 이미지를 dangling image..
What is NginX? NGINX 는 웹 서비스, 리버스 프록시, 캐싱, 로드 밸런싱, 미디어 스트리밍 등을 위한 오픈 소스 소프트웨어이며 최대 성능과 안정성을 위해 설계된 웹 서버 서비스이다. HTTP 서버 기능 외에도 NGINX는 이메일(IMAP, POP3 및 SMTP)용 프록시 서버와 HTTP, TCP 및 UDP 서버용 리버스 프록시 및 로드 밸런서로도 사용할 수 있습니다. 프록시 두 PC가 통신을 할 때 직접 하지 않고 중간에서 대리로 통신을 하는 것을 프록시라고 하고, 중계 역할을 하는 것을 프록시 서버 라고 한다. 리버스 프록시 애플리케이션 서버의 앞에 위치하여 클라이언트가 서버를 요청할 때 리버스 프록시를 호출하고, 리버스 프록시가 서버로부터 응답을 전달받아 다시 클라이언트에게 전송하는 ..
nginx.conf 와 default.conf 의 차이점 nginx.conf vi /etc/nginx/nginx.conf vim /etc/nginx/nginx.conf nano /etc/nginx/nginx.conf user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; //Process가 동시에 처리 가능한 접속자 수 } http { include /etc/nginx/mime.types; default_type application/octet-stream; // 웹서버의 기본 Content-Type을 정의한다. log_form..
🐋 Docker network 🐋 Docker 컨테이너(container)는 격리된 환경에서 돌아가기 때문에 기본적으로 다른 컨테이너와의 통신이 불가능하다. 하지만 여러 개의 컨테이너를 하나의 Docker 네트워크(network)에 연결시키면 서로 통신이 가능하다. Driver (네트워크 종류) bridge 기본 네트워크 드라이버이다. 브리지 네트워크는 일반적으로 애플리케이션이 통신이 필요한 독립 실행형 컨테이너에서 실행될 때 사용한다. host 독립형 컨테이너의 경우 컨테이너와 Docker 호스트 간의 네트워크 격리를 제거하고 호스트의 네트워킹을 직접 사용한다. overlay 오버레이 네트워크는 여러 Docker 데몬을 함께 연결하고 스웜 서비스가 서로 통신할 수 있도록 한다. 오버레이 네트워크를 사용..
🐋 Docker Logging 🐋 시스템이 정상적으로 운영됨을 확인하고 발생된 문제에 대한 디버깅을 효율적으로 관리하고자 한다면, 컨테이너 모니터링은 필수 이다. 도커 기본 로깅 도커가 제공하는 기능으로 별도의 인자를 명시하지 ㅇ낳았거나 다른 로딩 SW를 설치하지 않았다면, **.log파일로 남긴다. docker logs 기본 로깅 단점 STDOUT / STDERR 만 처리하므로 로그를 파일로만 기록할 수 있다. 컨테이너가 운영중에 있다면 기본 로깅 기능은 log를 계속해서 기록하여 사용자의 디스크 용량을 잡아먹을 것이다. ELK 를 이용한 로깅 Elasticsearch 준 실시간 검색 기능을 제공하는 텍스트 검색 엔진이다. 대용량의 데이터 처리를 위해서 여러 개의 노드로 쉽게 확장이 가능하도록 설계되었..
- Total
- Today
- Yesterday
- OOP
- 릿코드
- interview
- Solid
- java
- Matlab
- spring-cloud
- 스프링부트
- 백준
- 면접
- JPA
- 스프링
- 알고리즘
- C언어
- CS
- 자격증
- Algorithm
- docker
- 그래프
- 디자인패턴
- 매트랩
- springboot
- nginx
- ajax
- Spring
- security
- 수학
- 프로그래머스
- 자바
- kakao
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |