Spring

Spring 02 - ConnPool

나주나주 2024. 2. 27. 12:14

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 불러오고

반자동화란 이렇게 순서대로 불러오는 거~

MyBatis 사용을 위한 root-context.xml 설정 방법

 

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