생각정리/항해99
[주특기 1주차] Spring 1일차
생각중임
2023. 8. 25. 23:03
Spring 입문주차 1주차
RESTful API
api가 기능에 맞게 http를 준수하며 잘 설계된 상태를 restful 하다라고 한다.
Spring과 SpringBoot
Spring은 AOP, IoC/DI 등 여러 기능들을 많이 가지고 있는데 이를 컨트롤 하기 위해서는 복잡한 xml설정들이 필요하다.
SpringBoot는 기존의 xml설정을 대신하여 어노테이션 기반의 설정을 통해 보다 간편하게 사용할 수 있도록 보완했다.
특히 내장형 Tomcat을 가지고 있어 서버를 실행시키는데 편하다.
Lombok
메서드/생성자 등을 자동으로 생성해주어 코드를 절약할 수 있도록 도와주는 라이브러리
많이 사용되는 어노테이션
- @Getter : get() 메서드를 자동으로 만들어준다.
- @Setter : set() 메서드를 자동으로 만들어준다.
- @AllArgsConstructor : 기본 생성자를 만들어준다.
- @NoArgsConstructor : 모든 필드를 파라미터로 가진 생성자를 만들어준다.
- @RequiredArgsConstructor : final 제어자가 붙은 필드를 파라미터로 가진 생성자를 만들어준다.
- @Controller : 컨트롤러에 사용
- @RestController : html을 사용하지 않는 컨트롤러에 사용
MVC 패턴
Model, View, Controller로 구분하여 역할을 분리한 소프트웨어 디자인 패턴
Model1과 Model2가 있는데 요즘은 거의 Model2를 사용한다.
- Model : 내부 비즈니스 로직을 처리하기 위한 역할, 데이터 추출, 저장, 수정, 삭제 등의 역할 수행
- View : 사용자에게 보여주는 화면, 사용자와 상호작용하고 컨트롤러로부터 받은 모델의 결과값을 출력
- Controller : 사용자의 입력을 받아 Model에 전달하고, Model의 결과를 바탕으로 View에 전달
JDBC
JDBC는 Java DataBase Connectivity로 DB에 접근할 수 있도록 Java에서 제공하는 API이다.
DB 연결 로직을 변경할 필요없이 DB를 변경이 가능하다.
1주차 숙제
// 문제 1
CREATE TABLE IF NOT EXISTS MANAGER (
id bigint primary key,
name varchar(100) not null,
student_code varchar(100) not null,
CONSTRAINT manager_fk_student_code foreign key(student_code) references student(student_code)
);
// 문제 2
ALTER TABLE MANAGER MODIFY COLUMN id bigint auto_increment;
// 문제 3
insert into manager values (id, 'managerA', 's1');
insert into manager values (id, 'managerA', 's2');
insert into manager values (id, 'managerA', 's3');
insert into manager values (id, 'managerA', 's4');
insert into manager values (id, 'managerA', 's5');
insert into manager values (id, 'managerB', 's6');
insert into manager values (id, 'managerB', 's7');
insert into manager values (id, 'managerB', 's8');
insert into manager values (id, 'managerB', 's9');
// 문제 4
SELECT s.name, e.exam_seq, e.exam_seq
FROM manager m LEFT JOIN student s ON m.student_code = s.student_code
LEFT JOIN exam e ON s.student_code = e.student_code
WHERE m.name = 'managerA';
// 문제 5
ALTER TABLE EXAM DROP CONSTRAINT exam_fk_student_code;
ALTER TABLE EXAM ADD CONSTRAINT exam_fk_student_code FOREIGN KEY(student_code) REFERENCES STUDENT(student_code) ON DELETE CASCADE;
ALTER TABLE MANAGER DROP CONSTRAINT manager_fk_student_code;
ALTER TABLE MANAGER ADD CONSTRAINT manager_fk_student_code FOREIGN KEY(student_code) REFERENCES STUDENT(student_code) ON DELETE CASCADE;
DELETE FROM STUDENT WHERE student_code = 's1';