HikariCP
: dataSource에 connection pool 연결해줌
<!-- jdbc 커넥션 풀 설정: root-context.xml에 환경 설정 추가 필수(driver, url, id, pw, dataSource) -->
<!-- https://mvnrepository.com/artifact/com.zaxxer/HikariCP -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>2.7.4</version>
</dependency>
MyBatis
: DB 연결 및 sql 처리용 객체 API, 기존 SQL 활용 가능 (native SQL)
전통적인 JDBC 프로그램 | MyBatis |
직접 Connection을 맺고 마지막에 close() | 자동으로 Connection close() 가능 |
PreparedStatement 직접 생성 및 처리 | MyBatis 내부적으로 PreparedStatement 처리 |
PreparedStatement의 setXXX() 등에 대한 모든 작업을 개발자가 처리 | #{prop}과 같이 속성을 지정하면 내부적으로 자동 처리 |
SELECT의 경우 직접 ResultSet 처리 | 리턴 타입을 지정하는 경우 자동으로 객체 생성 및 ResultSet 처리 |
<!-- mybatis: DB sql 처리용 객체(mybatis, mybatis-spring, tx(트랜젝션), jdbc 연동) -->
<!-- 마이바티스 : jdbc 연동용 https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!-- 마이바티스 : 스프링 연결용 https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.3</version>
</dependency>
<!-- 스프링 트랜젝션 처리용 https://mvnrepository.com/artifact/org.springframework/spring-tx -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- 스프링에 jdbc 연결용 https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
Mapper interface
: query와 그에 대한 처리를 지정하는 java의 매핑? (자바 파일과 xml의 경로가 똑같게 하고, xml에 sql문 적음! 그것만알ㅇㅇ)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mydatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.zerock.mapper.TimeMapper">
<select id="getTime2" resultType="string">
SELECT sysdate FROM dual <!-- resultset으로 나옴 -->
</select>
</mapper>
Tip) XML 이용 이유: 인코딩 디코딩 필요 없고 SQL이 복잡한 경우
조건
Mapper | Mapper.xml | ||
경로 | 가 | 동일해야 한다 | |
메서드명 | <I S U D> 태그의 id명 | 이 | 동일해야 한다 |
99P
DispatcherServlet 이리 보내고 저리 보내고
첫번째로 spring/appServlet/ 안에 xml 불러오고
두번째로 root-context 불러오고
반자동화란 이렇게 순서대로 불러오는 거~
5.3
모델에서는 순수하게 ㅔ이터를 처리하는 로직
컨트롤러 요청을 처리하는 매핑
------
뷰는 데이터를 보여줌
컨트롤러는 데이터(Model)을 처리하고...
어댑터 = 꽂아주는 놈
Resolver = 보여주는 놈
servlet-context.xml
<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<resources mapping="/resources/**" location="/resources/" /> <!-- css봄 -->
<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- view 밑에 jsp파일 넣고 -->
<beans:property name="prefix" value="/WEB-INF/views/" /> <!-- 외부에서 url이 들어오면 이 경로의 -->
<beans:property name="suffix" value=".jsp" /> <!-- jsp 파일로 보낸다 -->
**중요** [4] Controller는 개발자가 작성하는 클래스로 ... View에 전달해야 하는 데이터는 주로 Model이라는 객체에 담아서 전달합니다. Controller는 다양한 타입의 결과를 반환하는데 이에 대한 처리는 ViewResolver
Front-Controller 패턴을 이용하는 경우에는 정해진 ... 엄격한
06. 스프링 MVC의 Controller
- 다양한 타입의 파라미터 처리 (Get, Post) -> 어노테이션 처리
- ㅇㄹ
@Controller
<!-- 컨트롤러 역할을 하는 패키지를 스프링이 관리 -->
<context:component-scan base-package="org.zerock.controller" />
@RequestMapping("") //서브 주소가 안 들어오면
@RequestMapping(value = "/basic", method = { RequestMethod.GET, RequestMethod.POST })
get방식과 post방식 둘 다 처리 가능
@GetMapping("/basicOnlyGet") @GetMapping은 오직 get방식으로만 동작
GET 장점 url로 간편하게 호출 / 보안 낮음
post 바디 안쪽으로 데이터가 들어가기 때문에 안전하지만 처링 바업ㅂ 복잡스~
SampleDTO에는 int타입으로 선언된 age가 자동으로 숫자로 변환되는 것을 볼 수 잇습니다
'Spring' 카테고리의 다른 글
Spring 04 (0) | 2024.02.29 |
---|---|
기본적인 웹 게시물 관리 (0) | 2024.02.28 |
Spring 03 - Spring MVC, 파일 업로드(기본) (0) | 2024.02.28 |
Spring 01 - 스프링의 특징 (2) | 2024.02.27 |
Spring 00 - 초기 설정 방법 (0) | 2024.02.26 |