2강 STS 설치하기
UTF-8
0과 1을 표현할수 있는 박스
박스 2개면 4개의 경우의 수
00 01 10 11 → 00: A 01: B 10:C 11:D
(알파벳을 모두 나타내기 힘듬(알파벳 수 :26*2) → 박스 6개필요) 숫자도 필요함 기호도 필요함
약 8개의 박스가 필요함
256개의 경우의 수 → 아스키코드표
8bit ⇒ 1byte 하나의 문자를 표현할수 있는 최소단위
한글은 최소 2바이트 필요 중국어는 3바이트필요 나라마다 다름
그래서 전세계 표준 → utf-8 (3byte)
4강 Ioc 패키지 위치
9장 git의 3가지 영역
10장 http1.1
11강 stateless
stateless방식은 한번의 요청과 응답이 이루어지면 클라이언트와 서버와의 연결선이 끊어지는 것을 말한다. 이 방식은 주로 http에 사용되는 방식이며 이는 서버의 부하를 줄여준다.
12강 MIME타입이란
MIME 타입이란 클라이언트에게 전송된 문서의 다양성을 알려주기위한 메커니즘입니다. 웹에서는 파일의 확장자는 별 의미가 없습니다. 그러므로, 각 문서와 함께 올바른 MIME 타입을 전송하도록 서버가 정확히 설정하는것이 중요합니다.
수 많은 종류의 문서가 있으므로 많은 MIME 타입들이 존재합니다.
문법
type/subtype
개별 타입
text/plain
text/html
image/jpeg
audio/mpeg
audio/*
...
15강 maven이란
Maven은 프로젝트에 필요한 라이브러리를 관리해준다. 우리는 단지 pom.xml 파일에 "기술"하기만 하면된다. EX) 1. gson이 필요해 2. OJdbc가 필요해 작동원리: 프로젝트가 시작될 때 Maven이 pom.xml을 읽어서 파일서버인 중앙저장소에서 우리가 기술한 라이브러리를 다운받는다. 라이브러리 파일은 .m2 > repository에 저장된다. Maven은 마지막에 다운받은 라이브러리를 빌드한다. 장점: 더이상 각각의 사이트에서 라이브러리를 다운받아 lib파일에서 직접 관리하지 않아도 된다.
라이브러리들끼리의 의존성을 관리해준다.
16강 lombok세팅 및 사용해보기
@Builder 어노테이션의 장점: 1. 객체에 값을 넣을때 순서를 지키지 않아도 된다. 2. 객체 값 순서를 헷갈려서 객체의 값을 잘못 넣는 실수하는 것을 방지한다.
17강 yml설정하기
스프링부트는 application.yml 파일에 설정하면 된다. @RestController는 문자 그 자체를 return 하는 반면, @Controller는 해당 경로 이하에 있는 파일을 리턴하므로 슬러시(/)를 붙여야 한다. 스프링부트는 기본적으로 jsp 지원을 하지 않는다. jsp파일을 리턴해줘도 정상적으로 동작하지 않는다. 스프링부트에서 jsp를 인식하기 위한 사전설정은 다음과 같다. 1. pom.xml에 JSP 템플릿 엔진 dependency 추가 org.apache.tomcat.embed tomcat-embed-jasper 2. application.yml에 다음 코드를 추가한다. spring: mvc: view: prefix: /WEB-INF/views/ suffix: .jsp src/main/webapp/WEB-INF/views 디렉토리를 직접 만들어야 한다. 이때 뒤에 확장자명이 이미 설정파일에 추가되어 있으므로 파일이름만을 return한다. EX) return "temp"; JSP파일은 정적 파일이 아니므로 웹서버인 아파치가 처리하지 못한다. 톰캣이 대신 컴파일해서 웹브라우저에게 전달한다.
18강 User 테이블 생성
package com.cos.blog.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.ColumnDefault;
import org.hibernate.annotations.CreationTimestamp;
import java.sql.Timestamp;
import javax.persistence.*;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder // 빌더 패턴!!
// ORM -> Jave(다른언어) Object -> 테이블로 매핑해주는 기술
@Entity // User 클래스가 MySQL에 테이블이 생성이 된다.
public class User {
@Id //Primary key
@GeneratedValue(strategy = GenerationType.IDENTITY) // 프로젝트에서 연결된 DB의 넘버링 전략을 따라간다
private int id; // 시퀀스, auto_increment
@Column(nullable = false, length =30)
private String username; // 아이디
@Column(nullable = false, length =100) // 123456 => 해쉬 (비밀번호 암호화)
private String password;
@Column(nullable = false, length =50)
private String email; // myEmail, my_email
@ColumnDefault("'user'")
private String role; // Enum을 쓰는게 좋다. // admin, user, manager
@CreationTimestamp // 시간이 자동 입력
private Timestamp createDate;
}
20강 Board테이블 생성
package com.cos.blog.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.ColumnDefault;
import org.hibernate.annotations.CreationTimestamp;
import javax.persistence.*;
import java.sql.Timestamp;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
public class Board {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) // auto_increment
private int id;
@Column(nullable = false, length = 100)
private String title;
@Lob // 대용량 데이터
private String content; // 섬머노트 라이브러리 <html>태그가 섞여서 디자인이 됨.
@ColumnDefault("0")
private int count; // 조회수
@ManyToOne(fetch = FetchType.EAGER) // Board = Many, User = One
@JoinColumn(name="userId") // userId라는 이름으로 조인이 된다.
private User user; // DB는 오브젝트를 저장할 수 없다. FK, 자바는 오브젝트를 저장할 수 있다.
@OneToMany(mappedBy = "board", fetch = FetchType.EAGER) // mappedBy 연관관계의 주인이 아니다 (난 FK가 아니에요) DB에 칼럼을 만들지 마세요
private List<Reply> reply;
@CreationTimestamp // 데이터가 인서트 또는 업데이트될때 자동으로 현재시간이 들어감
private Timestamp createDate;
}
출처
https://www.youtube.com/watch?v=6bhF5o4gAOs&list=PL93mKxaRDidECgjOBjPgI3Dyo8ka6Ilqm&index=1
https://getinthere.tistory.com/15
https://github.com/codingspecialist/Springboot-JPA-Blog.git
'스프링부트 with JPA' 카테고리의 다른 글
스프링부트 with JPA 블로그 4(61~73강) (0) | 2024.02.22 |
---|---|
스프링부트 with JPA 블로그 3(41~60강) (0) | 2024.02.22 |
스프링부트 with JPA 블로그 2(21~40강) (0) | 2024.02.22 |