본문 바로가기

SpringBoot24

[스프링 부트 핵심 가이드] 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.
[스프링 부트 핵심 가이드] Chapter 6. 데이터 베이스 연동 스프링 부트 핵심 가이드 [스프링 부트 핵심 가이드] Chapter 6. 데이터 베이스 연동 어플리케이션은 데이터를 주고 받는 것이 주 목적이다 특히 엔터프라이즈급 어플리케이션에서는 데이터베이스가 꼭 필요하다 Maria DB 설치 https://mariadb.org/download 에서 마리아DB를 설치할 수 있다 그 외에도 MySQL 같이 다양한 데이터 베이스가 있다 ORM Object Relational Mapping으로 자바와 같은 객체 지향 언어에서 의미하는 객체와 RDB (Relational Database)의 테이블을 자동을 매핑하는 방법이다 장점 ORM을 사용하면서 데이터베이스 쿼리를 객체지향적으로 조작할 수 있다 쿼리문 전체를 작성하지 않아도 된다 (개발 비용이 줄어든다) 객체지향적으로 데.. 2023. 9. 8.
스프링 캐시 스프링 캐시 캐시 임시로 데이터를 저장하는 공간이다 인메모리가 될 수 있고, 서버에 캐시를 만들 수 있다 빠른 처리 속도로 성능을 향상할 수 있다 이미 조회한 데이터를 임시로 저장하고, 다음에 같은 데이터에 접근할 때, 더 빠르게 데이터를 조회할 수 있도록 한다 예) 어제 배웠던 내용을, 저번 주에 배웠던 내용보다 더 빠르게 기억할 수 있다 캐시를 정할 때, 얼마나 요청이 많이 들어오는지 확인해보는 방법도 있다 유저가 요청을 할 때마다, 데이터를 생성해야 하나? 미리 데이터를 생성해 놓고, 유저들이 그 데이터를 조회하는게 더 빠르다 캐시를 삭제해야 하는 이유 업데이트가 될 시에, 캐시의 데이터도 없어야 한다 캐시는 무한정 메모리가 아니다 (한번씩 비워줘야 한다) 캐시에는 TTL이 있다 Time To Li.. 2023. 9. 5.
스프링 스크래핑 스프링 스크래핑 스크래핑이란? 웹사이트 굉장히 많은 데이터를 가지고 있고, 사용자들이 보기 편하게 가공이 되어 있다 HTML 문서를 보기 편하게 만든 것이 웹사이트 웹사이트에 HTML을 통해 보여지는 정보들을 모으는 것이 웹 스크래핑이란 것이다 웹 스크래핑은 HTML 문서를 받고 문서를 파싱(Parsing, 구문 분석) 해서 필요한 데이터를 추출한다 (일반적으로 파이썬으로 많이 사용된다) Client 대신 스크래핑 서버가, 웹 서버에게 요청을 보내서 데이터를 받아오는 것이다 서버를 사용하는 유저들의 수가 많으면 서버 부하가 걸리듯이, 스크래핑 서버에서 너무 많은 요청을 보내면 서버 부하가 걸린다 즉 서버에 요청을 보낼 때에는, 웹 서버에서 부하가 걸리지 않을 정도의 요청을 보내야 한다 주의사항 사이트의 .. 2023. 9. 4.
스프링 API 문서 만들기 스프링 API 문서 만들기 작성 이유 백엔드 개발자 같은 경우 프론트 개발자에게 문서를 전달하여, 어떤 기능이 있는지 알려준다 백엔드 개발자끼리 정보를 공유할 수 있다 즉 개발자가 만든 기능을 사람들이 이해할 수 있도록 작성을 하는 것이다 .txt로 만들면, 업데이트, 수정 하는 것이 어렵다 (개발 할 때마다 수정을 해야 한다) 계속 수정을 못 하면 사용자들이 기능을 제대로 못 사용할 수도 있다 API 문서를 돕는 tool Swagger / ReDoc / GitBook 등이 있다 고르는 방식은 협업의 방식, 사람들의 취향 등 사용한 언어를 고려해서 사용할 수 있다 사용성 : 간단한가??? Swagger? HTML로 접근을 할 수 있다 API 문서를 만들면, 하나의 URL로 다른 사람에게 공유를 할 수 있.. 2023. 9. 3.
[스프링 부트 핵심 가이드] Chapter 5. API를 작성하는 다양한 방법 스프링 부트 핵심 가이드 [스프링 부트 핵심 가이드] Chapter 5. API를 작성하는 다양한 방법 각 HTTP 메서드에 해당하는 API를 개발할 예정이다 GET / POST / PUT / DELETE 가 있다 GET API 만들기 주로 어플리케이션에서 데이터를 조회할 때에 사용하는 API이다 아래에서는 http://localhost:8080/api/v1/get-api/name 주소로 실행이 된다 새로 메서드를 만들때마다, 어플리케이션을 실행해야 한다 @RestController @RequestMapping("/api/v1/get-api") public class GetController { // http://localhost:8080/api/v1/get-api/name @GetMapping("/na.. 2023. 9. 3.
[스프링 부트 핵심 가이드] Chapter 4. 스프링 부트 애플리케이션 개발하기 스프링 부트 핵심 가이드 [스프링 부트 핵심 가이드] Chapter 4. 스프링 부트 애플리케이션 개발하기 프로젝트 생성 두 가지 방법이 있다 Spring Initializr 라는 사이트를 통해 프로젝트를 생성한다 Intellij IDEA에서 프로젝트를 생성한다 인텔리제이 IDEA에서 프로젝트 생성 인텔리제이에는 Spring Initializr가 내장이 되어 있다 외부에서 프로젝트를 만드는 것이 아닌, 인텔리제이에서 바로 프로젝트를 생성하고 개발할 수 있다 1. 인텔리제이에서 New Project를 클릭하기 2. 왼쪽 바에 언어와 빌더 등이 있는데 Spring Initializer 선택하기 Name : 프로젝트 이름 Location : 프로젝트를 생성할 위치 Language : JVM (Java Virt.. 2023. 9. 2.
스프링 Scheduled 스프링 Scheduled 스케줄링을 하면 좋은 이유 자동화가 될 수 있다 특히 API를 통해 데이터를 가져와야 할 경우, 자동으로 데이터를 가지고 올 수 있다 사용자가 사용을 할때마다 데이터를 가지고 오면 매우 비효율적이다 (그래서 특정 시간을 둬서, 데이터를 가지고 오면 효율적으로 바꿀 수 있다) API를 스케줄링을 통해 가지고 와서 DB에 저장을 한다 그러면 사용자가 사용을 할 때마다 API를 찾는 것이 아닌, 서버 DB에서 바로 데이터를 찾을 수 있다 그만큼 API를 사용하는 데에, 비용도 줄일 수 있을 것 Batch와 Scheduler의 차이 Batch 는 사용자와 상호작용 없이 여러 개의 작업을 미리 정해진 순서에 따라 중단 없이 처리하는 것 Scheduler 는 특정한 시간에 등록한 작업을 자.. 2023. 9. 2.
스프링 Transaction 스프링 Transaction Transaction이란? 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위 상태 변화라는 것은 쿼리문을 이용하여, DB를 접근하고 수정하고, 삭제하는 것이다 작업 단위는 프로젝트 별 또는 상황 별로 나눌 수 있다 트랜잭션이 실패했을 때, 롤백으로, 트랜잭션이 실행하기 이전의 상태로 돌아가는 것이다 트랜잭션이 완전히 성공을 해야, DB를 제대로 관리할 수 있을 수 있다 트랜잭션 중에, 어떤 것은 성공하고, 어떤 것을 실패했을 때, 성공한 데이터가 저장이 된다면, DB가 복잡해질 수 있다 JPA든 JDBC든 모두 쿼리문을 사용하여 DB의 상태를 변화시키는 것이다 JDBC는 쿼리문을 직접 작성하지만, JPA는 ORM을 통해 개발자가 간단하게 작성한 코드를 쿼리문으로 바꾸어.. 2023. 9. 1.