728x90
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC# 모든 개발자를 위한 HTTP 웹 기본 지식 강의 - 인프런 실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., [사진] 📣 확인해주세요!본 강의는 자바 스프링 완전 정복 시리즈의 세 번째 강의입니다. 우아한형제들 최연소 기술 www.inflearn.com 🟦 섹션 8. HTTP 헤더2 - 캐시와 조건부 요청 캐시란? 클라이언트가 서버에 요청하는 자원은 단순 text부터 이미지, 영상, 파일까지 다양하다. 그 중에서는 용량이 커서 큰 네트워크 비용을 부담해야 하는 자원들이 있고, 변경 가능성이 잦지 않은 자원들이 있다...
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC# 모든 개발자를 위한 HTTP 웹 기본 지식 강의 - 인프런 실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., [사진] 📣 확인해주세요!본 강의는 자바 스프링 완전 정복 시리즈의 세 번째 강의입니다. 우아한형제들 최연소 기술 www.inflearn.com 🟦 섹션 7. HTTP 헤더 1 - 일반 헤더 ⬛ 1. HTTP 헤더 개요 ◼️ HTTP 헤더 ◼️ HTTP 헤더 용도 HTTP 전송에 필요한 모든 부가 정보를 담음 HTTP 전송에 필요한 [메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, ..
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC# 모든 개발자를 위한 HTTP 웹 기본 지식 강의 - 인프런 실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., [사진] 📣 확인해주세요!본 강의는 자바 스프링 완전 정복 시리즈의 세 번째 강의입니다. 우아한형제들 최연소 기술 www.inflearn.com 🟦 섹션 6. HTTP 상태코드 ⬛ 1. HTTP 상태코드 소개 ◼️ HTTP 상태코드 란? 클라이언트가 서버로 요청을 보내면 요청의 처리 상태를 응답해서 알려주는 기능이다. ◼️ HTTP 상태코드 예시 1xx (Informational) : 요청이 수신되어 처리중 ..
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC# 모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의 실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., [사진] 📣 확인해주세요!본 강의는 자바 스프링 완전 정복 시리즈의 세 번째 강의입니다. 우아한형제들 최연소 기술 www.inflearn.com 🟦 섹션 5. HTTP 메서드 활용 ⬛ 1. 클라이언트에서 서버로 데이터 전송 ◼️ 데이터 전달 [방식] | 크게 2가지 1) ‘쿼리 파라미터’를 통한 데이터 전송 GET 주로 정렬 필터(검색어) 2) ‘HTTP 메시지 바디’를 통한 데이터 전송 POST, PUT..
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC# 모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의 실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., [사진] 📣 확인해주세요!본 강의는 자바 스프링 완전 정복 시리즈의 세 번째 강의입니다. 우아한형제들 최연소 기술 www.inflearn.com 🟦 섹션 4. HTTP 메서드 ⬛ 1. HTTP API 를 만들어보자 ◼️ API URI 설계의 분리 리스소 (대상) : 회원 - 명사 행위 : 조회/등록/수정/삭제 - 동사 API URI 설계를 할 때 ‘리소스(대상)’ 과 해당 리소스를 대상으로 하는 ‘행위’는..
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC# 모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의 실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., [사진] 📣 확인해주세요!본 강의는 자바 스프링 완전 정복 시리즈의 세 번째 강의입니다. 우아한형제들 최연소 기술 www.inflearn.com 🟦 섹션 3. 모든 것이 HTTP ⬛ 1. 모든 것이 HTTP ◼️ HTTP (HyperText Transfer Protocol) 문서 간의 링크를 통해서 하이퍼테스트 문서를 통해 연결하는 프로토콜 HTTP 메시지에 ‘모든 것’을 담아서 전송이 가능하다. HTTP..
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC# 모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의 실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., [사진] 📣 확인해주세요!본 강의는 자바 스프링 완전 정복 시리즈의 세 번째 강의입니다. 우아한형제들 최연소 기술 www.inflearn.com 🟦 섹션 2. URI와 웹 브라우저 요청 흐름 ⬛ 1. URI | Uniform Resource Identifier 뜻 : 리소스를 식별하는 통합된 방삭 URI는 로케이터 (Locator), 이름(Name) 또는 둘 다 추가로 분류될 수 있다. 즉, URI 내부에..
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC# 모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의 실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., [사진] 📣 확인해주세요!본 강의는 자바 스프링 완전 정복 시리즈의 세 번째 강의입니다. 우아한형제들 최연소 기술 www.inflearn.com 🟦 섹션 1. 인터넷 네트워크 이번 섹션에서는 인터넷 통신, IP, TCP/UDP, PORT, DNS 에 대해 학습한다. ⬛ 1. 인터넷 통신 Q. 인터넷망에서 컴퓨터들은 어떻게 통신하는가? 예를 들어서, 클라이언트 옆에 서버가 바로 존재한다면 간단히 케이블만연결..
⬛ JPA | @ManyToOne, @OneToMany 이해하기 은행 서비스에서 **사용자(User)**가 1개 이상의 계좌(Account)를 가질수 있다면 아래처럼 물리 테이블을 설계 할 것이다. 1) TABLE_USER 입장에서 보면 OneToMany이고 | (1: N) 관계 하나의 User가 여러 Account를 가질 수 있다. 2) TABLE_ACCOUNT 입장에서 보면 ManyToOne이다. | (N:1) 관계 ⬛ @OneToMany | 1: N관계 예를 들어, User 입장에서 여러 Account는 대상이 된다. User클래스에 대상 Account id값만 집어넣어서 간접 참조하여 둘의 연관관게를 맺는다. 즉, 내가 1이고 대상이 N이라는 의미인데, 두 객체 간의 연관관계를 맺을 때, User..
⬛ 'java.lang.IllegalArgumentException: null’ 오류 대출 기능 API 만들고 실행 했다가 생긴 오류이다. [원인] 애초에 내가 대출 User, 책 이름 입력 시, 없는 User 이름을 넣어 서버 오류가 났다. [해결] 이후에 목록 상 존재하는 User 이름을 주게 되니 책 대출에 성공했다
🏓 트랜잭션 적용과 영속성 컨텍스트 🟦 트랜잭션 적용 방법 | @Transactional org.springframework.transaction.annotaion.Transactional 을 imort 해야 한다. 이 어노테이션이 붙은 대상 메소드 내부에 있는 sql처리들이 묶인다고 생각하자. 1) 이 어노테이션이 붙은 메소드를 호출하면, start transaction; 을 해주며 (트랜잭션을 시작) 2) 함수가 예외 없이 잘 끝나면 commit 3) 문제가 발생할 경우 rollback → @Transactional 어노테이션은 Unchecked Exception에 대해서만 롤백이 일어난다. IOException과 같은 Checked EXception에서는 롤백이 일어나지 않는다. 🟦 영속성 컨텍스트..
🏓 트랜잭션 트랜잭션 : 쪼갤 수 없는 업무의 다위 예를 들어, 쇼핑 사이트에서 User가 물건 주문 시 처리하는 일이 3가지라고 하자. 새 주문 정보 저장 포인트 저장 구매 기록 저장 그런데, 이 세 가지 작업들 중 하나의 처리라도 누락된다면 문제가 생길 것이다. ex. 주문 기록은 존재하는데 포인트가 안쌓이는 등. 이처럼 여러 SQL을 사용하여 처리를 할 때, 모두 다 성공하면 → 한 번에 성공시키고, 하나라도 누락되면 → 모두 실패시키는 것을 ‘트랜잭션’ 이라고 한다. 트랜잭션으로 묶어서, 모든 SQL을 성공시키거나, 하나라도 실패하면 모두 반영시키지 말자. 🟦 트랜잭션 사용 명령어 1) 트랜잭션 시작하기 start transaction; 2) 2명의 User를 연속해서 저장해보자. 이때, 아직까지..
목표 1) 문자열 SQL 직접 사용하는 것의 한계를 알고, 그 해결책인 JPA, Hibernate, Spring Data JPA 가 무엇인지 이해 2) Spring Data JPA를 이용하여 데이터 생성, 조회, 수정, 삭제 3) 트랜잭선 필요성, 스프링에서 트랜젝셔 제어 방식 익히기 4) 영속성 컨텍스트-트랜잭션 관계 이해하고, 영속성 컨텍스트 특징 알기 🏓 SQL 직접 사용하는 것의 문제, 그 해결책인 JPA 우리는 이전까지 DB에 접근하기 위해 SQL 을 직접 작성하였다. 🟦 SQL 직접 작성하는 것의 문제점 1) 실수 가능 & 실수 인지 시점 느리다. 즉, 컴파일 타임 때 발견 못하고 런타임 때 발견하는 오류. SQL문 작성 과정에서 실수의 가능성이 존재하고, 이를 발견하기까지 시간이 걸린다. 2..
🏓 스프링 컨테이너와 스프링 빈 @RestController 의 역할은 해당 객체를 API 진입 지점으로 만들어 줄 뿐 아니라, 해당 클래스를 스프링 빈으로도 등록시킨다. @SpringBootApplication 을 최초에 실행 서버 위에 붙였다. 이 어노테이션은 다양한 설정들을 자동으로 해주는데 그 중 하나가 스프링 서버 내부에 거대한 컨테이너를 만드는 것! **컨테이너 안에 들어가는 클래스를 ‘스프링 빈’**이라고 부른다. 스프링 컨테이너는 빈으로 등록된 클래스가 필요로 하는 객체를 컨테이너 내부에서 찾아 인스턴스화를 진행해준다. ♦️서버 실행 시 순차 발생하는 일 컨테이너가 시작된다. 컨테이너에 많은 빈들이 ‘자동 등록 된다’ 개발자가 수동 설정한 스프링 빈들도 등록된다. 필요한 의존성도 자동 설정..
🏓 Controller, Service, Repository 구조 분리하기 Controller에서 모든 기능을 구현하면 안 되는 이유는 생산성이 낮아지고→유지보수성이 매우 떨어진다. 함수는 최대한 작게 만들고 한 가지 일만 수행하는 것이 좋다. 클래스는 작아야 하며 하나의 책임만을 가져야 한다. 구조를 Controller-Service-Repository 3가지 구조로 분리하고 각 클래스에 위치한 메소드는 한 가지 역할에 집중하도록 해야 한다. 🟦 Controller 클래스 | @RestController API 진입 지점으로서 HTTP Body를 객체로 변환해주고 뷰와 소통하는 부분 🟦 Service 클래스 | @Service 실질적인 비즈니스 로직 구현하는 곳 🟦 Repository 클래스 | @Re..
🏓 Spring 서버에 MySQL DB 연결 및 API 리팩토링 스프링 서버에 MySQL DB를 연결하고 기존 유저 저장 API와 조회 API를 리팩토링해보자. 🟦 1) 스프링 서버와 DB 연결 application.yml 파일 생성 후, 파일 내부에 서버와 연결할 DB 정보를 설정해야 한다. spring: datasource: url: "jdbc:mysql://localhost/library" username : "root" password : "1234" driver-class-name: com.mysql.cj.jdbc.Driver DB에 User 테이블을 생성해주자 (API가 사용할 테이터이므로) create table users {//그냥 user는 인식 X id bigint auto_increm..
spring을 사용하다보면 DTO, DAO, VO에 대한 용어에 대하여 많이 접하게 됩니다. 해당 개념에 대하여 간단하게 정리해보았습니다. DAO DAO(Data Access Object) 는 데이터베이스의 data에 접근하기 위한 객체입니다. DataBase에 접근 하기 위한 로직 & 비지니스 로직을 분리하기 위해 사용합니다. DTO DTO(Data Transfer Object) 는 계층 간 데이터 교환을 하기 위해 사용하는 객체로, DTO는 로직을 가지지 않는 순수한 데이터 객체(getter & setter 만 가진 클래스)입니다. 유저가 입력한 데이터를 DB에 넣는 과정을 보겠습니다. 유저가 자신의 브라우저에서 데이터를 입력하여 form에 있는 데이터를 DTO에 넣어서 전송합니다. 해당 DTO를 받..
🏓 Database와 MySQL 우리가 List에 담은 User 정보는 서버가 종료되면 함께 사라지는 데이터들이다. 즉, 지난 List에 담긴 데이터들은 RAM에 쓰인 데이터들이었고, DISK까지 머무르지 않는 데이터들이라 서버 종료 시 사라진다. 서버가 종료되어도 유저 정보가 남아있도록 하려면 DISK에 저장해야 한다. 어떻게 서버에서 DISK에 정보를 저장할 수 있을까 ? - Database 를 사용하면 된다 ! ⬛ Database | DB 데이터를 구조화시켜 저장하는 ‘장치’ RDB 는 관계형 DB로서, 데이터를 표처럼 구조화시켜 저장시키는 장치이다. RDB의 한 종류로서, MySQL을 다뤄보자. ⬛ MySQL에서 테이블 만들기 데이터베이스 (=폴더) 테이블 (=파일) 필드 정의 (=헤더) 필드 타..
찾아보니 스프링에서 이런 에러가 나면 해당 **Controller.java 파일의 Mapping 에 문제가 발생한 것이라고 한다. 나의 경우 다음과 같이 같은 이름의 GetMapping 이 두 개 들어가 있었다. @GetMapping("/upload") public String uploadBoardForm() { return "/boards/upload"; } @GetMapping("/upload") public String uploadBoard(Board board) { service.uploadBoard(board); return "redirect:/board/main"; // 디렉토리가 아니라 주소라 board 임. } 아래 Mapping 은 GetMapping 이 아니라 PostMapping 어노..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.