Mission
수정 페이지의 데이터를 DB로 갱신하고, 이를 확인하시오
데이터의 수정 흐름 3단계
1. 데이터를 받고 /articles/update
- Form 데이터가 DTO에 담겨서 Controller로 전달이되면
2. 이를 entity로 가공해서 DB에 저장한 데이터를
- 이를 Entity로 가공해서 Repository를 통해 DB로 갱신 save() 한다.
- 단 기존데이터가 있는경우에만 수정되어야 한다
- 여기서 서버와의 역활 분담은 MVC가
- DB와의 소통은 JPA가 한다.
- DB의 관리는 SQL 언어를 통해 이루어진다.
3. show 페이지에 출력 한다.
- 데이터가 서버에 이동되는 과정(HTTP) 간단히 알아봅시다.
- 데이터가 서버로 전송되는 과정
데이터가 서버로 전송되는 과정
클라이언트에서 서버로 데이터 전송은
다양한 통신규약은 즉 Protocol에 의해 이루어진다.
친구한테 전화 카톡, 이메일, 쪽지 등 다양한 방식으로 연락을 하면
여기서 Protocol의 종류는
FTP(File Transfer Protocol) : 파일 전송을 위한 프로토콜
SMTP(Simple Mail Transfer Protocol) : 이메일 전송을 위한 프로토콜
SSH(Secure Shell) : 원격지 호스트 컴퓨터에 접속하기 위해 사용되는 인터넷 프로토콜 등 이 있다.
기기와 목적에 따라 다양하다
웹 서비스에서 사용하는 프로토콜이 바로 HTTP(Hyper Text Transfer Protorol)이다.
HTTP는 다양한 요청을 메소드르 통해 보낸다.
대표적인 메소드로 GET(read), POST(create), PATCH/PUT(update), DELETE(Delete)가 있다.
http SQL
Create Post Insert
Read Get Select
Update Patch Update
Delete Delete Delete
-실습개요
수정 페이지에서 데이터 변경 시 수정된 데이터 페이지가 나올 수 있도록 구현
-더미 데이터 설정
매번 데이터 입력하는게 귀찮아서, 더미데이터를 자동으로 생성할 수 있게 코드 작성
/resources/data.sql 파일 생성
Insert INTO article(id, title, content) VALUES (1, 'aaa', '1111');
Insert INTO article(id, title, content) VALUES (2, 'bbb', '2222');
Insert INTO article(id, title, content) VALUES (3, 'ccc', '3333');
더미데이터 Insert
form 태그는 get과 post 만 지원..
-수정 폼 받기
@PostMapping("/articles/update")
public String update(ArticleForm form){
return "";
}
-Dto 변경 /dto/ArticleForm
private Long id;
public Article toEntity() {
return new Article(id, title, content);
}
-컨트롤러 처리 개요
1) DTO를 엔티티로 변환한다.
2) 엔티티를 DB로 저장한다.
(2-1 : DB에 기존 데이터를 가져온다.)
3) 수정 결과 페이지로 리다이렉트 한다.
1)DTO를 엔티티로 변경
Article articleEntity = form.toEntity();
dto/ArticleForm이 무엇을 하는 .java 파일?
ArticleForm 객체를 가지고.
private Long id;
private String title;
private String content;
public Article toEntity() {
return new Article(id, title, content);
//반환해줌 뭐를? Article entity 객체
}
Article 객체를 return 해주는 파일.
-기존 엔티티를 수정
2: 엔티티를 DB로 저장한다
(2-1 : DB에 기존 데이터를 가져온다.)
Article target = articleRepository.findById(articleEntity.getId()).orElse(null)
- > article레파지토리가 id값을 통해 데이터를 가져오는데 만약에 없다면 null 을 리턴해라.
타켓이라는 변수에 데이터가 있다면 article엔티티가 연결될 것이다.
2: 엔티티를 DB로 저장한다
(2-2 : 기존 데이터에 값을 갱신한다.!)
if (target != null) {
articleRepository.save(articleEntity); // 엔티티가 DB로 갱신
-수정된 데이터 확인
http://localhost:8080/h2-console 로 들어가서 데이터 확인
select * from ARTICLE;
-결과 화면으로 리다이렉트
return "redirect:/articles/" + articleEntity.getId(); //id 값을 가져옴
-SQL로 데이터 수정하기
특정 대상을 바꾸고 싶을 때는 where 절 추가
UPDATE ARTICLE
SET
title = 'changed by sql',
content = 'changed by sql'
WHERE
id=2 ;
🔥 구글링 훈련하기
- jpa data.sql 사용법
- jpa defer-datasource-initialization
- 인텔리제이 한글 깨짐
내용참고
https://www.youtube.com/channel/UCpW1MaTjw4X-2Y6MwAVptcQ
'Spring Boot > Spring Boot 입문 홍팍' 카테고리의 다른 글
[Spring boot] (17) CRUD와 SQL 쿼리 (0) | 2023.08.08 |
---|---|
[Spring boot] (16) 데이터 삭제하기 (DB까지) (0) | 2023.08.08 |
[Spring boot] (14) 수정 폼 만들기 (0) | 2023.08.07 |
[Spring boot] (13) 링크와 리다이렉트 (0) | 2023.08.07 |
[Spring boot] (12) 데이터 목록보기 (0) | 2023.08.07 |