본문 바로가기

스프링부트28

[스프링 부트 핵심 가이드] Chapter 9장. 연관 관계 매핑 스프링 부트 핵심 가이드 [스프링 부트 핵심 가이드] Chapter 9장. 연관 관계 매핑 RDBMS를 사용할 때에 한 테이블을 가지고 모든 기능을 구현하기 불가능 하다 즉 여러 테이블을 이용하고, 연결하여 기능을 구현한다 One To One : 일대일 (1:1) One To Many : 일대다 (1:N) Many To One : 다대일 (N:1) Many To Many : 다대다 (N:M) 일대일 매핑 일대일 단방향 매핑 @Entity @Table(name="MEMBER") @Getter @Setter @NoArgsConstructor public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long mem.. 2023. 9. 24.
[스프링 부트 핵심 가이드] Chapter 8장. Spring Data JPA 활용 스프링 부트 핵심 가이드 [스프링 부트 핵심 가이드] Chapter 8장. Spring Data JPA 활용 JPQL JPA Query Language의 줄임말로 JPA에서 사용할 수 있는 쿼리를 의미한다 JPQL은 엔티티 객체를 대상으로 수행하는 쿼리다 쿼리 메서드 주로 Repository라는 패키지를 만들어서, 그 안에 Repository 인터페이스를 만든다 그리고 인터페이스는 JpaRepository 클래스를 상속 받아서 다양한 CRUD 메서드를 사용할 수 있다 쿼리 메서드는 크게 동작을 결정하는 주제 (Subject)와 서술어 (Predicate)로 구분한다 'find.... By', 'exists... By'와 같은 키워드로 쿼리 주제를 정하며 'By'는 서술어의 시작을 나타내는 구분자 역할을 .. 2023. 9. 16.
[Java] Nginx [Java] Nginx NginX 굉장히 가벼운 웹 서버고, 많은 요청이 들어와도 좋은 성능을 보이고 있다 Apache vs NginX Apache 요청이 아파치 웹서버로 들어올 때마다, 프로세스를 생성을 하여, 프로세스가 하나의 요청을 처리한다 요청이 들어올 때마다 프로세스를 생성하여 오버해드가 발생할 수 있다 비교적 무겁고, 성능이 NginX에 비해 떨어진다 NginX master 또는 worker 프로세스를 configuration에 따라서 미리 생성해 놓는다 Task Queue에다가 요청을 쌓아두고, 한 개의 프로세스가 여러 개의 요청을 처리한다 Task Queue에다가 요청을 쌓아두면서, 비동기 처리도 가능해진다 미리 프로세스를 적게 두면 Task Queue 쌓이는 요청이 많아 응답이 느려진다 .. 2023. 9. 14.
[Java] Kafka [Java] Kafka Kafka? 아파치 재단에서 운영하는 플랫폼이다 Kafka를 이해하기 위해서는 Message Oriented Middleware를 알아야 한다 Middleware는 시스템과 컴포넌트 사이에 있는 중간자 역할을 해준다 두 시스템이 너무 강하게 결합되어 있으면, 서로 의존성이 높게 된다 A와 B가 너무 강하게 결합되어 있으면, A에서 에러가 났을때 B도 영향을 받는다 즉 의존성이 낮은게 더 좋고, 이것을 도와주는 것이 Middleware다 즉 Message Oriented Middleware는, message를 기반으로 중간자 역할을 해주는 것이다 이 Message Oriented Middleware 하단에 Message Queue가 있는 것 그리고 Message Queue를 사용하는.. 2023. 9. 13.
[Java] Linux [Java] Linux 서버에 적합하고, 무료 Open Source 소프트웨어다 Linus Torvalds 라는 사람이 이 Linux OS를 만들었다 Linux는 Linux Kernel (리눅스 커널) 자체를 의미한다 커널은 CPU나 RAM을 포함한 컴퓨터 자원을 관리하고 할당하는 중요한 코어 소프트웨어다 이 Linux를 기반으로 커스터마이즈 된 OS를 만들 수 있다 Linux 계열에는 RedHat, Ubuntu, Debian이 있다 리눅스 커널은 아래와 같은 디렉토리 구조를 가지고 있다 Docker를 이용해서 리눅스 사용하기 Linux 명령어 상대 경로 vs 절대 경로 상대 경로 : 현재 파일의 위치에서의 경로 절대 경로 : 최상위 위치에서의 경 ./ 현재 위치 ../ 현재 위치에서 한단계 상단 위치 .. 2023. 9. 12.
[Java] Docker [Java] Docker 서비스 배포란? 코드로 구현하고, 결과는 콘솔 또는 로컬 호스트를 통해 결과를 확인한다 즉 다른 사용자들을 위한 실제 서비스가 되기에는 부족하다 즉 이 코드들이 다른 사용자들이 이용할 수 있도록 배포가 되어야 한다! 다른 사람들이 개발자들이 만든 코드를 사용할 수 있게 만드는 것이 서비스 배포다 개발자들이 만든 코드를 실행 가능한 형태로 서버 컴퓨터로 옮긴다 그럼 사용자들은 서버 컴퓨터를 통해, 개발자들이 만든 코드를 사용하게 된다 온프레미스 (On-Premise) : 자체 서버가 있는 경우 비용이 굉장히 많이 든다 (설치 비용 + 유지 비용 + 인력까지) 클라우드 : 다른 제 3자가 만들어 놓은 서버를 원격으로 빌려서 사용하는 것이다 예) AWS 대어료를 클라우드 사용자 입장에.. 2023. 9. 11.
[스프링 부트 핵심 가이드] Chapter 6. 데이터 베이스 연동 스프링 부트 핵심 가이드 [스프링 부트 핵심 가이드] Chapter 6. 데이터 베이스 연동 어플리케이션은 데이터를 주고 받는 것이 주 목적이다 특히 엔터프라이즈급 어플리케이션에서는 데이터베이스가 꼭 필요하다 Maria DB 설치 https://mariadb.org/download 에서 마리아DB를 설치할 수 있다 그 외에도 MySQL 같이 다양한 데이터 베이스가 있다 ORM Object Relational Mapping으로 자바와 같은 객체 지향 언어에서 의미하는 객체와 RDB (Relational Database)의 테이블을 자동을 매핑하는 방법이다 장점 ORM을 사용하면서 데이터베이스 쿼리를 객체지향적으로 조작할 수 있다 쿼리문 전체를 작성하지 않아도 된다 (개발 비용이 줄어든다) 객체지향적으로 데.. 2023. 9. 8.
스프링 스크래핑 스프링 스크래핑 스크래핑이란? 웹사이트 굉장히 많은 데이터를 가지고 있고, 사용자들이 보기 편하게 가공이 되어 있다 HTML 문서를 보기 편하게 만든 것이 웹사이트 웹사이트에 HTML을 통해 보여지는 정보들을 모으는 것이 웹 스크래핑이란 것이다 웹 스크래핑은 HTML 문서를 받고 문서를 파싱(Parsing, 구문 분석) 해서 필요한 데이터를 추출한다 (일반적으로 파이썬으로 많이 사용된다) Client 대신 스크래핑 서버가, 웹 서버에게 요청을 보내서 데이터를 받아오는 것이다 서버를 사용하는 유저들의 수가 많으면 서버 부하가 걸리듯이, 스크래핑 서버에서 너무 많은 요청을 보내면 서버 부하가 걸린다 즉 서버에 요청을 보낼 때에는, 웹 서버에서 부하가 걸리지 않을 정도의 요청을 보내야 한다 주의사항 사이트의 .. 2023. 9. 4.
스프링 API 문서 만들기 스프링 API 문서 만들기 작성 이유 백엔드 개발자 같은 경우 프론트 개발자에게 문서를 전달하여, 어떤 기능이 있는지 알려준다 백엔드 개발자끼리 정보를 공유할 수 있다 즉 개발자가 만든 기능을 사람들이 이해할 수 있도록 작성을 하는 것이다 .txt로 만들면, 업데이트, 수정 하는 것이 어렵다 (개발 할 때마다 수정을 해야 한다) 계속 수정을 못 하면 사용자들이 기능을 제대로 못 사용할 수도 있다 API 문서를 돕는 tool Swagger / ReDoc / GitBook 등이 있다 고르는 방식은 협업의 방식, 사람들의 취향 등 사용한 언어를 고려해서 사용할 수 있다 사용성 : 간단한가??? Swagger? HTML로 접근을 할 수 있다 API 문서를 만들면, 하나의 URL로 다른 사람에게 공유를 할 수 있.. 2023. 9. 3.