20231221 TIL

김민석·2023년 12월 21일
0
  1. 계획
  • 입문주차 공부
  1. 문제점
  • 몇 번을 들어봐도 어렵다.. SQL 명령어 모르겠다. 따라치기 하는 것 같다.
  1. 보완할 점
  • SQL 쪽 강의 계속 들어봐야 할 듯
  1. 내일 계획
  • 입문주차 공부
  1. 오늘의 공부
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를 삭제

profile
개발자가 되고 싶지만 허덕이는 으른이

0개의 댓글