이하 구디아카데미 김지훈 강사님의 수업자료와 강의 내용 정리, 실습한 내용을 정리함
드디어 ㄷㄷ SPRING
Start SPRING
- 패키지명은 절대 바꾸면 안 됨(되던 게 안 되는 현상 발생할 수 있음)
- Tomcat v9.0 선택
- tomcat 설치 폴터 선택 > JRE jdk 선택
Spring Framework
디자인 패턴
디자인 패턴의 정의
- 설계 문제에 대한 해답을 문서화 하기 위해 고안된 방법.
- 소프트웨어 개발 과정에서 자주 나타나는 과제를 해결하기 위한 방법.
- 패턴은 특정한 상황에서 구조적인 문제를 해결하는 방식을 설명해 준다.
패턴 사용 시 주의 사항
- 디자인 패턴은 일반적으로 대규모 프로그램 개발에 적합하다.
- 각 디자인 패턴이 유용한 상황에 대해 잘 알아야 한다.
- 패턴은 절대적이지 않다. 상황에 맞게 유연하게 변형이 가능하다.
- 패턴의 틀에 갇힌 사고방식은 효율성이 낮은 프로그램을 생산하게 된다.
- 패턴은 사용하는 것보다 차용한다는 생각으로!
MVC 패턴(Model 2)
Basic MVC Pattern
- 기본적인 MVC 구조로 jsp 와 Java 를 분리해 보자.
Multi URL
- Controller 에서는 요청 객체와 url 을 처리한다.
- 하나의 Controller 에서는 단일 url 또는 다수의 url 을 처리할 수 있다.
code
Calculator Service
- Controller 와 View 로만 구성된 계산기 서비스.
code
DAO와 DTO
- Controller 는 받은 일을 직접 처리하거나 다른 Model 에 전달한다.
- Model 은 Controller 부터 요청 받은 일을 처리하고 통지한다.
- 이때 DB 에 access 할 일이 생길 경우 우리는 DB 처리만을 위한 class 를 생성한다.
Data Base
- 데이터베이스(Database, DB)란? : 데이터의 저장소.
- DBMS(Database Management System, 데이터베이스 관리 시스템)란? 데이터베이스를 운영하고 관리하는 소프트웨어. 계층형, 망형, 관계형 DBMS 중 대부분의 DBMS가 테이블로 구성된 관계형 DBMS(RDMBS)형태로 사용됨.
- SQL(Structured Query Language)란? 구조화된 질의 언어라는 뜻으로 관계형 데이터베이스에서 사용되는 언어. 표준 SQL을 배우면 대부분의 DBMS를 사용할 수 있음.
Data Base-JDBC
-
Java 와 Data Base 를 연결해 보자.
-
연결을 위해 필요한 것은?
- JAVA 와 DB 연결 프로그래밍
- DB 쿼리 실행 프로그래밍
- DB 쿼리 반환 값 추출 프로그래밍
-
이런 어려운 프로그래밍을 직접 하기보다는 누군가의 코드를 가져다 쓰는 것이 효율적이다.
-
그래서 위 내용을 모두 수행해 줄 수 있는 JDBC(Java Data Base Connectivity) 가 필요하다.
porm.xml 변경
- java-version : 자바 버전 변경
- pringframework-version : RELEASE 버전 변경
- source 와 target 변경
- 둘을 인식하기 위해 version 도 함께 변경
porm.xml 의 중간 위치
web.xml 맨 끝
-
DBMS 의 종류가 바뀔 경우 JDBC 만 변경해 주면 된다.
-
DB 에 접속해서 Data 를 꺼내온다는 것은 창고에서 물건을 꺼내오는 것과 같다.
-
Connection 객체는 DB 에서 하는 모든 일을 대신 DB 에 접속해서 수행해 준다.
-
JDBC 를 활용한 DBMS 와의 연결
code
Data Base - Connection Pool
- Connection Pool 을 사용하면 Connection 을 조금 더 효율적으로 사용할 수 있다.
- Connection 이란 DB 의 모든 것이 담겨 있고, 그때그때 꺼내서 정보를 줄 수 있다.
- 아래 그림은 pool 에 대한 개념도이다.
DB 정보 context 에 입력
code
Data Base - JDBC
- Jaba Database Connectivity의 약어
- Connection pool 을 활용하면 context.xml 의 정보를 가져오는 작업이 필요하다.
- Connection Pool 을 활용하여 DBMS 와 연결해 보자.
Controller
Service
HomeDAO
-
MVC 패턴은 무엇의 약자인가요?
// Model View Controller
-
Connection Pool 을 사용하면 좋은 점은?
// DB 접속 설정 객체를 미리 만들어 연결하여 불필요한 작업이 사라지므로 클라이언트가 빠르게 DB에 접속이 가능하다.
// Connection 을 조금 더 효율적으로 사용할 수 있다.
-
logger의 역할은?
// System.out.println 과 같은 역할
// 어느 클래스에서 발생했는지 알려주고 설정에 따라 파일 저장도 가능하다.
-
Model 객체의 역할은 무엇인가요?
// 기존의 RequestDispatcher 역할
-
@RequestMapping 의 역할은?
// 특정 uri 로 보낸 요청을 받아주는 받아주는 역할
( 이전 addr(uri-ctx) 역할 + method 지정 역할(get,post방식))
-
@RequestParam 이 하는 역할과 사용할 때 주의할 점으로 무엇이 일치해야 하는 것인지?
// 요청의 파라메터를 특정 변수에 담아주는 역할을 한다.
// 보낼 파라메터 명과 변수명이 일치해야 한다.
-
java 1.6 에서 switch 문을 사용 시 주의해야 할 점은?
// 문자열을 사용하면 안된다.
-
DB 의 데이터를 Connection으로 가져오고 close() 로 닫아주지 않으면 발생하는 문제점은 무엇인지?
// 쓰면 쓸수록 점점 느려지다 동작이 되지 않는다.
9.DB 접근을 위한 정보는 어떤 것들이 있나요?
// 유저명 / 패스워드 / 데이터베이스 주소 / 드라이버
-
어떤 객체가 DB 에서 하는 모든 일 대신 DB에 접속하여 수행하나요?
// 커넥션 전체
-
Connection pool을 활용하려면 어떤 정보를 가져오는 작업이 필요한데
여기서 어떤 정보란 무엇인지?
// context.xml
12.Connection pool을 활용하여 DBMS와 연결할 때 대략적인 순서는?
// 1. context.xml을 객체를 가져온다.
// 2. 이름이 jdbc/MariDB 인 태그를 가져온다.
// 3. 가져온 정보로 Connection 생성
// 4. 커넥션을 이용한 데이터 베이스 처리
// 5. 커넥션을 닫아 준다.
내일 할 것
Data Base - Query
- Data base 접속은 성공 했다
- 이제 Data Base 의 데이터를 처리하는 Query 문을 실행 해야 한다
- Query 문을 실행 하기 위해 Connection 은 두 가지 방법을 제공 해 준다