DBCP이라고한다.
우선 필요성에대해 찾아보았다
WAS(Web Application Server)와 데이터베이스 사이의 연결에는 많은 비용이 든다. MySQL 8.0을 기준으로 INSERT 문을 수행할 때 필요한 비용의 비율은 다음과 같다. 괄호 안의 숫자가 비율을 의미한다.
Connecting (3)
Sending query to server (2)
Parsing query (2)
Inserting row (1)
Inserting index(1)
Closing (1)
즉, 서버가 DB에 연결하기 위한 Connecting 비용이 가장 큰 비율을 차지한다. 이처럼 Connection을 생성하는 작업은 비용이 많이 드는 작업이다. 이를 보완할 수 있는 방법이 바로 Connection Pool이다. 출처
사용자로부터 웹 애플리케이션에 요청이 들어올때마다 데이터베이스 연결을 수립하고, 해제하는 것은 굉장히 비효율적으로 보인다. 우리는 어떻게 이런 비효율을 해결할 수 있을까? 미리 여러개의 데이터베이스 커넥션을 생성해놓고, 필요할 때 마다 꺼내쓰면 좋지 않을까? 방금 이야기한 방법을 데이터베이스 커넥션 풀 (connection pool)이라고 한다.
WAS는 데이터베이스 커넥션이 필요할 때 직접 커넥션을 생성하지 않고, 커넥션 풀 컨테이너로부터 커넥션을 하나 건네받고, 사용을 마치면 반납한다. 이렇게 함으로써 우리는 데이터베이스 연결을 열고, 닫는 비용을 절약할 수 있다.
가장많이 쓰이는 프레임워크로는 HikariCP라고한다.
HikariCP는 스프링부트에 기본으로 내장되어 있는 JDBC 데이터베이스 커넥션 풀링 프레임워크이다
SpringBoot는 커넥션 풀 관리를 위해 HikariCP를 사용한다
(Model-View-Controller)
내가 이전까지 작성했던 JSP파일들은 MVC 모델1버전이다.
모델2 구조의 특징은 웹브라우저의 모든 요청을 단일진입점 -> 하나의 서블릿(Java) -> Controller에서 처리한다는점
View - JSP
Controller - 서블릿, Model이 데이터를 어떻게 처리할지 알려주는 역할을 한다
사용자 화면과 서버 사이에서 연결시키는 역할
Model - 어플리케이션이 무엇을 할 것인지 정의한다. 내부 비즈니스 로직을 처리하기 위한 역할을 한다.
자세한건 JSP첫날에 정리해놓은 글을 봐야겠다
MVC, 모델1/2차이, JSP첫날
이클립스의 help - about 이클립스, 버전확인
버전에 맞는 Springsource tool을 받아야함
help - install에서 add누르고
STS - http://download.springsource.com/release/TOOLS/update/e4.8
설치
이후에 나오는 설치창 select all하고 다운, 하단 다운로드초록바 다되고 restart
new file에 spring탭 legacy project확인
SpringEx폴더, open projets from flie System
(SpringEx 폴더 폰에다 저장했음)
폴더 받고 빨간X뜰경우
-> C:\사용자\컴터이름.m2\repository
전부 잘라내기하고 다시 해보기
STS는 이클립스 최적화 Spring이라는것 같다
JSP파일은 views폴더 영역에
css, 이미지 ,js = src -> resources -> webapp -> resources안에다가 --> V
Java resource폴더에서 main/java 내부에 model과 controller가 둘다 위치함
--> M/C
controller 패키지가 진입점
legacy project는 협업하는 사람들과 같은 이름으로 만든다
legacy project -> 최상단 Spring폴더명 지정 -> 첫패키지명 지정해주기ex.)obj.test.controll
run on server에서 실행되는 localhost의 포트번호는
이클립스 톰캣 overview -> HTTP/1.1 번호이다
컨트롤러 자바파일에서 던져주는 메소드?의 리턴타입은
views 폴더를 기준으로 잡는다
views -> sample -> a.jsp, b.jsp
-> 하위폴더 return sample/a
-> views 폴더내부 return a
혹은 requestmapping의 value값에서 던져줘도 됨
root-context에서 DB연결
maven repository에서 pom.xml관련(자바버전, DBCP,Hikaricp)
수업들을때는 MYSQL 집에서는 MariaDB HeidiSQL을 쓰는데 집에와서 수업때 한걸 해보려니 자꾸 경로가 틀렸다고 나와서 처음에는 context path, port 문제인줄 알았는데
알고보니 DB연결 문제였다
아니 왜 헷갈리게 자꾸 경로를 찾을수없다고 띄우는거야...
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>2.3.0</version>
</dependency>
pom.xml에 의존성 추가, 버전은 맘에드는 걸루
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="driverClassName" value="org.mariadb.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mariadb://127.0.0.1:3306/sample?serverTimezone=Asia/Seoul"></property>
<property name="username" value="root"></property>
<property name="password" value="1234"></property>
</bean>
driverClassName이랑 jdbcUrl 에서 MariaDB에 맞는 드라이버로 수정