- 계획
- 문제점
- 몇 번을 들어봐도 어렵다.. SQL 명령어 모르겠다. 따라치기 하는 것 같다.
- 보완할 점
- 내일 계획
- 오늘의 공부
1. http 데이터를 객체로 처리하는 방법
- html form 태그를 사용
// [Request sample]
// POST http://localhost:8080/hello/request/form/model
// Header
// Content type: application/x-www-form-urlencoded
// Body
// name=Robbie&age=95
@PostMapping("/form/model")
@ResponseBody
public String helloRequestBodyForm(@ModelAttribute Star star) {
return String.format("Hello, @ModelAttribute.<br> (name = %s, age = %d) ", star.name, star.age);
}
Post방식으로 http 요청을 보낼 수 있음
이때 해당 데이터는 http Body에 "name=Robbie&age=95" 형태로 담겨져서 서버로 전달
해당 데이터를 java 객체 형태로 받는 방법은 @ModelAttribute 애너테이션을 사용 후 Body 데이터를 받아올 "Star star" 객체선언
- Query String 방식
// [Request sample]
// GET http://localhost:8080/hello/request/form/param/model?name=Robbie&age=95
@GetMapping("/form/param/model")
@ResponseBody
public String helloRequestParam(@ModelAttribute Star star) {
return String.format("Hello, @ModelAttribute.<br> (name = %s, age = %d) ", star.name, star.age);
}
"?name=Robbie&age=95"처럼 데이터가 두 개 뿐이면 괜찮으나, 여러개라면 @RequestParam 에너테이션으로 받기 힘들 수 있음.
이때 @ModelAttribute 에너테이션을 사용해 java의 객체로 데이터를 받아올 수 있음.
파라미터에 선언한 Star 객체가 생성되고, 오버로딩 된 생성사 혹인 Setter 메서드를 통해 name & age의 값이 담김
- @ModelAttribute와 @RequestParam은 생략이 가능
Spring은 파라미터(매개변수)가 SimpleValueType(원시(int), Wrapper타입(Integer), Date 등)이라면 @RequestParam으로 간주
그게 아니라면 @ModelAttribute가 생략되었다고 판단함.
2. 메모장
1) Creat, Read 구현
- DTO란 무엇인가?
DTO(Data Transfer Object)는 데이터 전송 및 이동을 위해 생성되는 객체
클라이언트에서 보내오는 데이터를 객체로 처리할 때 사용
DB와 소통을 담당하는 java클래스를 그대로 클라이언트에 반환하는 것이 아닌 DTO로 변환 후 반환할 때도 사용
2) Update, Delete 구현
----
3. Database와 SQL
1) Database
- Database는 말 그대로 데이터의 집합.
- Ex. 카톡메세지, 인스타그램의 사진 등의 정보를 저장하고 관리
- 용어
DBMS(Database Management System) : 데이터 베이스를 관리하고 운영하는 소프트웨어
RDBMS(Relational DBMS) : 관계형 데이터베이스, table이라는 최소 단위로 구성, 열(column)과 행(row)이 존재, 테이블 간 FK(Forign Key)를 통해 다른 데이터와 조합해서 볼 수 있음, Oracle(유료), MySQL, PostgreSQL 중에서 많이 고르나 우리는 MySQL사용
2) SQL
- SQL(Structured Query Language), RDBMS에서 사용되는 언어
- 국제표준화기구에서 SQL에 대한 표준을 정해 발표함.
- 그러나 DBMS를 제작하는 곳이 많아, 표준을 준수하되, 각 제품의 특성을 반영하기 위해 약간의 차이가 존재 => ????
- DDL
Data Definition Language의 약자.
CREATE : 새로운 데이터베이스 및 테이블 생성
ALTER : 데이터베이스와 테이블 내용 수정
DROP : 데이터베이스와 테이블 삭제, 데이터 및 테이블 전체 삭제 가능
TRUNCATE : 테이터베이스와 테이블을 삭제할 수 있음. 최초 테이블이 만들어졌던 상태 즉, 컬럼만 남김
- DCL
Data Control Language의 약자.
GRANT : 사용자 또는 ROLE에 대해 권한을 부여
REVOKE : 사용자 또는 ROLE에 부여한 권한을 회수
- DML
Data Manipulation Language의 약자
INSERT : 테이블에 새로운 row 추가 가능
SELECT : 테이블의 row를 선택
UPDATE : 테이블의 row 내용 수정
DELETE : 테이블의 row를 삭제