Spring jdbc 설정(2)

오늘도 코딩중!·2023년 4월 24일
0

Spring

목록 보기
1/4

저번에 이어 pom.xml의 설정은 배워본다

pom.xml은 Maven에서 가져올 라이브러리를 선언하는 공간이라고 생각하면 편하다.

설정

여기서부터 pom.xml

4.0.0
edu.kh
comm
comm
war
1.0.0-BUILD-SNAPSHOT

<!-- properties : 메이븐이 적용된 프로젝트에서 공통적으로 사용할 버전 또는 설정값 정보를 작성하는 태그 -->
<properties>
	<java-version>11</java-version>
	<org.springframework-version>5.3.14</org.springframework-version>
	<org.aspectj-version>1.9.4</org.aspectj-version>
	<org.slf4j-version>1.7.25</org.slf4j-version>
</properties>


<!-- dependencies : Maven 프로젝트는 외부 저장소와 의존 관계를 맺고 있어 프로젝트에 필요한 파일을(라이브러리) 
	사용자가 직접 받을 필요 없이 해당 태그 내에 지정된 형식으로 작성하면 네트워크를 통해 외부 저장소에서 자동으로 얻어와 세팅함. -->
<dependencies>
	
	<!-- JSTL 라이브러리 -->
	<!-- https://mvnrepository.com/artifact/org.apache.taglibs/taglibs-standard-impl -->
	<dependency>
	    <groupId>org.apache.taglibs</groupId>
	    <artifactId>taglibs-standard-impl</artifactId>
	    <version>1.2.5</version>
	    <scope>runtime</scope>
	</dependency>
	<!-- https://mvnrepository.com/artifact/org.apache.taglibs/taglibs-standard-spec -->
	<dependency>
	    <groupId>org.apache.taglibs</groupId>
	    <artifactId>taglibs-standard-spec</artifactId>
	    <version>1.2.5</version>
	</dependency>
	<!-- https://mvnrepository.com/artifact/org.apache.taglibs/taglibs-standard-jstlel -->
	<dependency>
	    <groupId>org.apache.taglibs</groupId>
	    <artifactId>taglibs-standard-jstlel</artifactId>
	    <version>1.2.5</version>
	</dependency>
	
	<!-- Spring 모듈 -->
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-context</artifactId>
		<version>${org.springframework-version}</version>
		<exclusions>
			<!-- Exclude Commons Logging in favor of SLF4j -->
			<exclusion>
				<groupId>commons-logging</groupId>
				<artifactId>commons-logging</artifactId>
			</exclusion>
		</exclusions>
	</dependency>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-webmvc</artifactId>
		<version>${org.springframework-version}</version>
	</dependency>


	<!-- AspectJ : AOP 기능을 사용하기 위한 언어 문법 -->
	<!-- aspectjrt : AspectJ 런타임 프로그램 -->
	<dependency>
		<groupId>org.aspectj</groupId>
		<artifactId>aspectjrt</artifactId>
		<version>${org.aspectj-version}</version>
	</dependency>

	<!-- AspectJ Weaver : aspect의 정보를 바탕으로 aspect를 구성한 코드를 생성하는데 필요한 유틸리티 프로그램 -->
	<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
	<dependency>
		<groupId>org.aspectj</groupId>
		<artifactId>aspectjweaver</artifactId>
		<version>${org.aspectj-version}</version>
	</dependency>


	<!-- Log4j (Logging) -->
	<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
	<dependency>
	    <groupId>org.apache.logging.log4j</groupId>
	    <artifactId>log4j-core</artifactId>
	    <version>2.17.1</version>
	</dependency>
	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>slf4j-api</artifactId>
		<version>${org.slf4j-version}</version>
	</dependency>
	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>jcl-over-slf4j</artifactId>
		<version>${org.slf4j-version}</version>
		<scope>runtime</scope>
	</dependency>
	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>slf4j-log4j12</artifactId>
		<version>${org.slf4j-version}</version>
		<scope>runtime</scope>
	</dependency>
	
	

	<!-- @Inject -->
	<dependency>
		<groupId>javax.inject</groupId>
		<artifactId>javax.inject</artifactId>
		<version>1</version>
	</dependency>


	<!-- Servlet -->
	<!-- Servlet 버전을 4.0으로 변경 -->
	<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
	<dependency>
	    <groupId>javax.servlet</groupId>
	    <artifactId>javax.servlet-api</artifactId>
	    <version>4.0.1</version>
	    <scope>provided</scope>
	</dependency>

	<dependency>
		<groupId>javax.servlet.jsp</groupId>
		<artifactId>jsp-api</artifactId>
		<version>2.1</version>
		<scope>provided</scope>
	</dependency>
	 
	
	<!-- 단위 테스트 도구 (JUnit) -->
	<!-- https://mvnrepository.com/artifact/junit/junit -->
	<dependency>
	    <groupId>junit</groupId>
	    <artifactId>junit</artifactId>
	    <version>4.13.2</version>
	    <scope>test</scope>
	</dependency>
	<!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-test</artifactId>
	    <version>${org.springframework-version}</version>
	    <scope>test</scope>
	</dependency>

	<!-- pom.xml 에러 방지 -->
	<dependency>
        		<groupId>org.apache.maven.plugins</groupId>
        		<artifactId>maven-resources-plugin</artifactId>
     			<version>2.4.3</version>
    		</dependency> 
</dependencies>


<!-- build : 프로젝트 빌드 시 사용되는 플러그인 추가 및 버전 정보 설정 -->
<build>
	<plugins>
		<plugin>
			<artifactId>maven-eclipse-plugin</artifactId>
			<version>2.9</version>
			<configuration>
				<additionalProjectnatures>
					<projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
				</additionalProjectnatures>
				<additionalBuildcommands>
					<buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand>
				</additionalBuildcommands>
				<downloadSources>true</downloadSources>
				<downloadJavadocs>true</downloadJavadocs>
			</configuration>
		</plugin>

		<!-- 컴파일러 플러그인은 프로젝트의 소스(자바코드)를 컴파일하는 데 사용 jdk 1.6 이상 사용 시 3.0 이상 버전을 
			사용, source, taget에는 사용하는 jdk 버전을 작성 -->
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-compiler-plugin</artifactId>
			<version>3.8.1</version>
			<configuration>
				<!-- jdk 버전과 맞춤 -->
				<source>11</source>
				<target>11</target>
				<compilerArgument>-Xlint:all</compilerArgument>
				<showWarnings>true</showWarnings>
				<showDeprecation>true</showDeprecation>
			</configuration>
		</plugin>
		<plugin>
			<groupId>org.codehaus.mojo</groupId>
			<artifactId>exec-maven-plugin</artifactId>
			<version>1.2.1</version>
			<configuration>
				<mainClass>org.test.int1.Main</mainClass>
			</configuration>
		</plugin>

		<!-- Could not initialize class org.apache.maven.plugin.war.util.WebappStructureSerializer -->
		<!-- 메이븐 구성 문제로 인한 pom.xml 오류 발생 시 해결 -->
		<plugin>
			<artifactId>maven-war-plugin</artifactId>
			<version>3.2.2</version>
		</plugin>
	</plugins>
</build>

여기서 el태그를 사용할 수 있다.
위에 선언한 자바 버전을 그대로 불러들여올 수 있음.

dependencies태그 안에다가 라이브러리를 가져다가 놓을 수 있음.
가끔 jstl라이브러리를 못읽어오는 경우가 있어서 /web-inf/밑에다가 lib를 만들어서 jstl을 읽어오는 라이브러리를 넣어주어라.
taglibs-standard-impl-1.2.5.jar
taglibs-standard-jstlel-1.2.5.jar
taglibs-standard-spec-1.2.5.jar


Spring FrameWork를 배워보자.

우리가 jdbc를 사용하기 위해서는 우리가 pom.xml에 사용할 라이브러리를 선언해야한다.

  • 	<!-- https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc11 -->
    	<dependency>
    	    <groupId>com.oracle.database.jdbc</groupId>
    	    <artifactId>ojdbc11</artifactId>
    	    <version>21.5.0.0</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>
    		<!-- 위 properties의 지정한 Spring 버전을 따라감 -->
    	</dependency>
    
    	<!-- Mybatis 영속성 프레임워크  -->
    	<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    	<dependency>
    		<groupId>org.mybatis</groupId>
    		<artifactId>mybatis</artifactId>
    		<version>3.5.9</version>
    	</dependency>
    
    	<!-- Spring - Mybatis 연결 모듈, 연결 역할을 하는 라이브러리 -->
    	<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
    	<dependency>
    		<groupId>org.mybatis</groupId>
    		<artifactId>mybatis-spring</artifactId>
    		<version>2.0.6</version>
    	</dependency>
    
    	<!-- 커넥션 풀 기능을 사용하기 위한 라이브러리 -->
    	<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2 -->
    	<dependency>
    	    <groupId>org.apache.commons</groupId>
    	    <artifactId>commons-dbcp2</artifactId>
    	    <version>2.9.0</version>
    	</dependency>

    mybatis 설정용 xml 파일을 설정하기.

mybatis를 사용하기 위해서 mybatis-config.xml(mapper의 경로를 설정)이 필요하다

설정 방법

window- preferences- xml catalog - user specific entries add

Mybatis-config.xml을 작성할 때 세팅순서는 매우 중요하다 정해진 framework로 구동하는 방식이기 때문에 세팅순서는 다음 올린 이미지와 같이 진행된다.

root-context.xml에 작성해야 할 것

root-context.xml이란?

  • 프로그램에 전반적으로 사용하는 기초적인 것들을 작성
  • 프로젝트 전반적으로 사용되는 자원을 생성(bean으로 등록하는 구문)하고 설정하는 파일
  • DB 연결 관련 정보, 트랜잭션 처리, 파일 업로드 등을 작성
  • 실행원리 : root-context.xml은 프로젝트가 실행될때 가장 먼저 가는 web.xml에서 root-context.xml을 확인한다.

Connection Pool을 사용하기 위한 설정.

MyBatis 관련 설정.


SqlSession은 Connection이라고 생각하면 편안.

SqlSessionTemplate이란?

SqlSessionFactoryBean이 만든 SqlSession그리고 tx를 통틀어 SqlSessionTemplate라고한다. 

트랜젝션 어노테이션이라는 것을 추가해서 쓸 것인데..이 설정을 인식할 설정이 필요하다. annotation-driven에서 설정해야한다.

여기서 에러나는 이유는 허락해주지 않아서이다.
source tab에서 namespace에서 tx를 눌러서 태그를 허용해준다.

여기까지 했으면 DAO에서 SqlSessionTemplate를 불러올 수 있음.

src/main/resources에 폴더 mappers를 만든다.

그 안에 xml파일인 xxx-mapper.xml(xxx는 해당하는테이블의 이름으로하면 구분하기 편함)


위처럼 해야함.

그리고 xml파일 내부에 작성하는 것은

  1. cache-ref 태그 삭제
  2. mapper 태그에 namespace 속성 추가.
  • 이름을 정해주는 이유는 원래이름은 경로가 나온다. 그러니 경로를 전부 부르기 보다는 축약해서 사용하기 좋기 때문에 하는 것. 
    	mapper가 있는 위치를 등록해줘야한다.(mybatis-config)

MyBatis-config.xml

그리고 내부에서 select문등 사용하기 위해서는 이러한 규칙을 따라야한다.



이렇게 하면 mapping 완료.

profile
늦은만큼 코막고 달려!

0개의 댓글