19

[백엔드] 스프링부트3 자바백엔드 개발입문 11장

11.1 REST API의 동작 이해하기 - 클라이언트가 보내는 HTTP 요청 메시지의 첫 줄에는 시작 라인인 요청 라인이 있고 아래에 헤더와 본문이 있다. - 응답으로 오는 상태코드는 요청이 성공했을 때는 200을 반환한다. - REST API의 응답 표준으로 사용하는 JSON은 키와 값의 쌍으로 된 속성으로 데이터를 표현한다. - REST: HTTP URL로 서버의 자원을 명시하고 HTTP 메서드로 해당 자원에 대해 CRUD하는 것 - API: 클라이언트가 서버의 자원을 요청할 수 있도록 서버에서 제공하는 인터페이스 - REST API란 REST 기반으로 API를 구현한 것 11.2 REST API의 구현 과정 - REST API의 URL을 설계해야 한다. - 조회 요청은 /api/articles -..

2024.01.13

[백엔드] 스프링부트3 자바 백엔드 개발 입문 - 7장

7장 게시글 수정하기: Update 7.1 데이터 수정 과정 1. 만들고 기존 페이지 불러오기 2. 데이터를 수정해 DB에 반영한 후 결과를 볼 수 있게 로 리다이렉트하기 [1단계] 다시 4단계로 나누어진다. 1. 에서 edit버튼을 클릭한다. 2. 요청을 받은 컨트롤러는 해당 글의 id로 db에서 데이터를 찾아 가져온다. 3. 컨트롤러는 가져온 데이터를 뷰에서 사용할 수 있도록 모델에 등록한다. 4. 모델에 등록된 데이터를 에서 보여 준다. 그러면 사용자가 내용을 수정할 수 있는 상태가 된다. [2단계] 다시 4단계로 나누어진다. 1. 폼 데이터(수정 요청 데이터)를 DTO에 담아 컨트롤러에서 받는다. 2. DTO을 엔티티로 변환한다. 3. db에서 기존 데이터를 수정 데이터로 갱신한다 4. 수정 데이..

2024.01.06

[백엔드] 스프링부트3 자바 백엔드 개발 입문 - 1장 / 2장

1장 - 스프링 부트: 자바 웹 프로그램을 쉽고 빠르게 만들기 위한 도구. 자바 웹 프로그램을 만들기 위한 기능과 도구가 모여 있다. - java 에는 자바 코드가 저장되고 resources에는 외부 파일이 저장된다. - 자바 프로그램의 시작점인 메인 메소드도 java 디렉터리 안에 위치하게 된다. - 웹 서비스는 클라이언트의 요청에 따른 서버의 응답으로 동작한다. 클라이언트란 서비스를 사용하는 프로그램 또는 컴퓨터를 말하고 서버는 서비스를 제공하는 프로그램 또는 컴퓨터를 말한다. - 클라이언트의 요청에 응답하려면 서버가 실행 중이어야 한다. - 스프링 부트는 서버의 역할을 수행한다. 스프링 부트를 종료하면 크롬에서 localhost:8080 (8080은 포트 번호)으로 접속하면 접근할 수 없다. - 웹..

2023.12.30

[SQL] SQL 레벨업 32강 - 34강

32강 시야 협착: 관련 문제 시야 협착에 빠지기 쉬운 경우를 한 가지 더 살펴본다. 30강의 Orders, OrderReciepts 테이블을 다시 사용한다 구하고 싶은 것: 주문번호마다 몇 개의 상품이 주문되었는가? -> 결과에 포함되어야 하는 필드: 주문번호, 주문자 이름, 주문일, 상품 수 1. 다시 sql을 사용한다면 주문자 이름, 주문일: order 테이블을 참조해야 한다. 결합과 집약 필요 - 집약 함수를 사용한 방법 SELECT 0.order_id, MAX(0.order_name) AS order_name, MAX(0.order_date) AS order_date, COUNT(*) AS item_count FROM Orders 0 INNER JOIN OrderReceipts ORC ON 0...

2023.12.18

[SQL] SQL 레벨업 6장

18강 기능적 관점으로 구분하는 결합의 종류 - 등가/비등가 결합: 결합 조건으로 등호를 사용하는지, 부등호를 사용하는지의 차이. - 자연 결합: 내부 결합이면서 등가 결합인 조합을 간단하게 작성하는 것. 두 테이블을 결합할 때 암묵적으로 같은 이름의 필드가 등호로 결합되는 것. 1. 크로스 결합 - 모든 결합의 모체 CROSS JOIN - 실무에서 사용할 기회 거의 x - 각각 레코드가 m, n개인 테이블 두 개를 Cross Join하면 총 mn개의 레코드가 출력됨. 데카르트 곱. 모든 조합을 구하는 연산이다. 2. 내부 결합 - 왜 '내부'? INNER JOID - 가장 많이 사용되는 조합 - 결합 키로 양쪽 테이블 모두에 존재하는 필드를 사용. - 내부 결합의 결과는 반드시 크로스 결합의 부분 집합..

2023.11.27

[SQL] SQL 레벨업 11강, 12강, 13강

11강 절차 지향형과 선언형 - 예외적인 몇 가지 상황을 제외하면 UNION을 사용하지 않는 것이 성능/가독성 면에서 좋다. CASE 식을 사용하는 것이 더 자연스럽다. - UNION 으로 연결하는 대상은 select '구문'이다. 따라서 절차 지향형 프로그래밍 언어에 익숙한 사람들에게 익숙한 방식이다. - 절차 지향형 프로그래밍 언어: 기본 단위가 '구문' - 선언 지향형 프로그래밍 언어: 기본 단위가 '식'. sql의 기본적인 체계는 선언형이다. - sql 구문의 각 부분에 작성하는 것은 모두 식이다. - 절차 지향형 세계에서 선언형 세계로 도약하는 것이 곧 sql 능력 향상의 핵심 12강 집약 - 집합 지향: 레코드 단위가 아닌 레코드의 '집합'단위로 처리를 기술한다.(ex group by 구, h..

2023.11.20

[SQL] SQL 레벨업 6강 SELECT문

2장 SQL 기초 RDB는 데이터를 관계(relation)이라는 형식으로 저장한다. 구현으로는 테이블(table)이라고 부른다. sql은 테이블을 검색해 데이터를 검색하거나 갱신할 때 사용하는 언어이다. 6강 select 구문 검색: 데이터가 저장되어 있는 테이블에서 필요한 데이터를 뽑아내는 것. aka 질의, 추출 - 검색을 위해 사용하는 sql 구문: select 구문 1. select 구와 from 구 - select 구문은 select구와 from구로 이루어져 있다. 전자에는 테이블이 갖고 있는 필드를 여러 개 쓸 수 있다. 후자에는 데이터를 선택할 대상 테이블이 지정된다.- 데이터를 어떤 방법으로 선택할지는 쓰여있지 않다: DBMS가 알아서 함 2. where 구- 특정 조건에 맞는 일부의 레코..

2023.11.13

[스프링] 스프링입문 - 코드로 배우는 스프링부트 섹션 1/섹션 2

프로젝트 환경설정 1. 프로젝트 생성 https://start.spring.io/ - gradle-groovy를 선택 - Spring Boot에서 정식 릴리즈된 버전 중 가장 최신인 것을 고른다(아무 괄호도 붙지 않은 것) - Add dependencies를 클릭 - Spring Web, Thymeleaf(html을 만들어 주는 템플릿 엔진)을 검색해서 선택 - Generate -> 다운로드 - 다운로드한 파일을 IntelliJ에서 열기. test코드는 요즘 개발 트렌드에서 매우 중요. resources는 실제 자바 코드 파일을 제외한 properties나 html파일이 들어있음 build.gradle 이게 중요하다. git.ignore - 깃에는 딱 필요한 소스코드만 올라가고, 빌드된 결과물 같은 건 ..

2023.11.04

[SQL] SQL 첫걸음 30, 31장

31강 집합 연산 1. SQL과 집합 - 데이터베이스에서는 테이블의 행이 집합의 요소에 해당 - select 명령을 실행하면 데이터베이스에 질의하며 그 결과 몇 개의 행이 반환된다. 이 결과 전체를 하나의 집합이라고 생각하면 된다. 2. union으로 합집합 구하기 - 집합을 서로 더한 것 - 핵심: 두 집합에서 겹쳐지는 부분이 결과에서 한 개밖에 나타나지 않는 것 - union 키워드 mysql> select * from sample71_a; +------+ | a | +------+ | 1 | | 2 | | 3 | +------+ 3 rows in set (0.03 sec) mysql> select * from sample71_b; +------+ | b | +------+ | 2 | | 10 | |..

2023.10.09

[SQL] SQL 첫걸음 - 29강, 30강

데이터베이스 객체 인덱스 뷰 인덱스 작성과 삭제 인덱스는 데이터베이스 객체의 하나로 DDL을 사용해 작성/삭제한다. 표준 SQL에는 create index명령이 없으나 대표적 DB 제품에는 모두 인덱스 구조가 도입되어 있다. ✏️ 인덱스 작성 create index isample65 on sample62(no); ✏️ 인덱스 삭제 drop index isample65 on sample62; 🔑 인덱스를 작성하면 검색이 빨라진다. 작성한 인덱스의 열을 where 구로 조건을 지정하여 select 명령으로 검색하면 처리속도가 향상된다. ✏️ explain a열에 대해 어떤 인덱스를 작성했다고 해 보자. create index isampl65 on sample62(a); 이 경우 이 인덱스는 a가 where구..

2023.10.02