Spring

    [SpringBoot] 2022/05/30 OneToMany

    **One To Many 1.연관 관계 와 관계형 데이터베이스 =>관계형 데이터베이스에서는 1:1, 1:N(N:1), M:N 의 관계를 이용해서 데이터가 서로 간에 어떤 관계를 가지고 있는지 표현 이 때 Primary Key 와 Foreign Key를 이용해서 관계를 설정 =>JPA에서는 어노테이션 과 방향성을 이용해서 표현하게 되는데 데이터베이스에서는 방향성의 개념이 없습니다. 1:1 -> @OneToOne 1:N -> @OneToMany N:1 -> @ManyToOne N:M -> @ManyToMany =>방향성은 단방향 과 양방향이 있습니다. 1)1:1 관계 =>한쪽 테이블의 하나의 행과 다른쪽 테이블의 하나의 행이 매칭이 되는 경우 =>이 경우는 양쪽 테이블의 기본키를 다른 테이블에 외래키로 추가..

    [SpringBoot] 2022/05/24 ToDo (REST API)

    **Back End 와 Front End 의 분리 =>Back End 는 MySQL 와 Spring Boot 의 조합으로 만들어서 JSON 데이터를 전송 =>Front End는 react.js를 이용해서 구현 1.REST API를 테스트 할 수 있는 애플리케이션 설치 - postman =>https://www.postman.com/downloads 2.Back End Application 1)프로젝트 생성 =>의존성: devtools, web, jpa, lombok, mysql 2)application.properties 파일에 기본 설정 추가 #server 의 port 설정 server.port = 80 #연결할 데이터베이스 설정 - MySQL spring.datasource.driver-class-n..

    [SpringBoot] 2022/05/24 Memo

    ** 하나의 테이블을 가지고 CRUD 작업을 수행하는 Application 1.프로젝트 생성 =>build type: gradle =>의존성 spring-devtools spring-jpa mysql 또는 oracle thymeleaf spring-web lombok 2.application.properties 파일에 기본 설정을 추가 #server 의 port 설정 server.port = 80 #연결할 데이터베이스 설정 - MySQL spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/adam?useUnicode=yes&characterEncoding=UT..

    [SpringBoot] 2022/05/23 SingleTable CRUD

    ** 하나의 테이블을 가지고 CRUD 작업을 수행하는 Application 1.프로젝트 생성 =>build type: gradle =>의존성 spring-devtools spring-jpa mysql 또는 oracle thymeleaf spring-web lombok 2.application.properties 파일에 기본 설정을 추가 #server 의 port 설정 server.port = 80 #연결할 데이터베이스 설정 - MySQL spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/adam?useUnicode=yes&characterEncoding=UT..

    [SpringBoot]2022/05/19: thymeleaf, Single table CRUD

    **Thymeleaf 1.Spring Boot 에서 화면 출력 1)jsp(Java Servelt Pages) 사용 - 서버 사이드 랜더링을 해야 함, Java 와 EL, JSTL 문법을 숙지 =>설정을 추가해야만 사용 가능 =>출력하는 파일의 확장자가 jsp로 고정 2)Template Engine 이용 - 확장자 html로 서버의 데이터 출력 가능, Template Engine의 문법을 숙지 =>Thymeleaf: Spring Boot 에서 권장 =>Velocity =>FreeMarker =>Mustache =>Groovy 3)REST API를 구성하고 별도의 Front End Application을 만들어서 출력 =>web 의 출력 같은 경우는 javascript의 ajax 나 react 나 vue 와..

    [SpringBoot]2022/05/18: JPA, Entity, 페이징, Querydsl

    **Spring JPA 1.Object Relational Mapping(ORM) =>객체 지향 패러다임을 관계형 데이터베이스에 보존하는 기술 =>객체 와 관계형 데이터베이스를 매핑해주는 것 =>관계형 데이터베이스에서의 Table 을 객체 지향에서는 Class 개념으로 파악하고 Row(Record)를 하나의 Instance 의 개념으로 파악 외래키(관계 와 참조)의 경우는 참조를 이용해서 파악 =>ORM은 객체 지향 과 관계형 데이터베이스 사이의 변환 기법을 의미 =>대다수의 객체 지향을 지원하는 언어에서는 ORM Framework 이 존재합니다. 2.Java Persistence API(JPA) =>Java ORM 의 API 표준 : 인터페이스 =>실제 구현체로는 Hibernate, EclipseLin..

    [Spring] Day 15 파일 업로드 (Code)

    1. pom.xml에 추가 commons-io commons-io 2.4 commons-fileupload commons-fileupload 1.4 2. servlet-context에 추가 3. UploadController package com.board.controller; import java.io.File; import java.io.IOException; import java.util.UUID; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.a..

    [Spring] Day15 파일 업로드 (Note)

    2022/4/5 다운로드: 브라우저에서 제공하는 서비스: 서버 제공하는 파일 -> 브라우저 (클라이언트) 쪽으로 보내주는 것 업로드: 서버에서 구현 가능: 브라우저 (클라이언트) PC에서 서버쪽으로 파일을 보내주는 것. 1) 파일 전송 방식: (업로드 기준) GET: URL 데이터 추가 ?뭐=뭐 이런식으로 보냄...주소창에 이미지를 올릴 수 없기에. 파일은 포스트 형식으로 보냄. POST: 데이터를 Body 몸체에 담아서 전송. 파일 업로드 시 POST 방식으로 업로드 요청해야함. *인코딩 방식 application/x-www-form-urlencoded: 지금까지 해온 form 태그 전송 인코딩 방식(디폴트) multipart/form-data: 파일 업로드 시 사용할 전송 인코딩 2) 파일 업로드 폼..

    [Spring] Day14 댓글 답글 달기 + 페이징 처리 (Code)

    1. SQL DEVELOPER에 답글 테이블 추가 --댓글 테이블2: 댓글 + 답글 create table reply2( rno number, --댓글의 순서 bno number not null, --원글의 숫자 reply varchar2(1000) not null, replyer varchar2(50) not null, replyDate date default sysdate, grp number, step number, lev number ); --grp: 댓글과 그의 답글을 그룹핑 해줄 컬럼 (댓글의 rno값 대입) --step: 답글의 순서 --lev: 댓글의 답글인지, 답글의 답글인지 -> 들여쓰기 몇번 됐는지. --pk추가 alter table reply2 add constraint pk_rep..

    [Spring] Day16 결제 API (Code)

    1. package com.board.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bi..