카테고리 없음

0302 오후수업

logloglog 2021. 3. 2. 15:45

빈은 총 6개

 

MVC 의 MVC 슬려고 하는게아니고 의존주입하려고 하는거임 즉 dao service 만드는게 아니고 그전에만들어놓은거쓸거임

 

처음에 데이터소스부터 만들자

 

*dependency injection instance of composition

 

 

이제는 프로젝트이름이 컨텍스트패스가아님. 컨

이게 진짜 얘 이름임. 패키지이름처럼 ㅇ.ㅇ.ㅇ 3음절로 끊어야함

com.spring.mvc 로 해두자

web lib 대신에 메이븐이 들어가잇다. 즉 우리가 jar 넣지않고 메이븐을 ㅗ대신한다는 말
web, mvc 추가됨
이거바꿔주기

 

여기있는 자바버전은 그냥 메타임

 

 

데이터소스 만들자 > 데이터소스 : ojdbc (오라클드라이버) 를 가져와야 오라클드라이버를 로딩함

 

>ojdbc6 이 필요함

 

 dbcp 커넥션풀

데이터베이스는 커넷션을 무작위로 주지않기때문에 풀형태로 만들어서써야함

그 커넥션풀이 오픈소스 dbcp 

데이터커넥션을 일정한 개숫로 받아놓고 할당해서주는방식

이걸 1.8에 맞춰서 2버전을 써야하는데 2.5버전을 써야함

근데 2.5버전의 스펙을보니 마이바티스 3.5에 들어가있더라

 

??

데이터소스를 빼려고 보니까 마이바티스가 아님 그래서 DBCP를 줘야함

데이터소스를 따로 빼서 마이바티스에 주는 방식이엇는데..?

 

데이터소스랑 dbcp를 따로잡아서 만들어야하는데 있는거갖다쓸거임 그 jar 가 피룡함 >>dbcp2

즉 데이터소스만들기위해선 데이터드라이버자르랑 커넥션 풀에대한 ㅈ ㅏ르 두개가필요함

근데 오라클이니까 ojdbc고 아파치꺼 dbcp2인거임

 

스프링 ㅇㅇ , ㅇㅇ 스프링 : 

 

조이너들이 스프링에 많아서 다른 프레임웍을 떙겨쓸수있음

마이바티스만 가지곳는 쓸수없음 Mybatis-spring 도 가지고와야함

 

위의 4개에

여기다가 매퍼만 만들면 끝남

 

beanconfigration mapper config? 세장으로 xml끝남

 

 

 

 

id는 임의로 주고싶은것

 

 

dbcp

mvnrepository.com/artifact/org.apache.commons/commons-dbcp2/2.5.0

 

Maven Repository: org.apache.commons » commons-dbcp2 » 2.5.0

 

mvnrepository.com

 

3.5.3버전에 맞는 마이바티스스프링자르가지고와야함

mvnrepository.com/artifact/org.mybatis/mybatis-spring

 

Maven Repository: org.mybatis » mybatis-spring

An easy-to-use Spring bridge for MyBatis sql mapping framework. VersionRepositoryUsagesDate2.0.x2.0.6Central15Nov, 20202.0.5Central27Jun, 20202.0.4Central20Mar, 20202.0.3Central35Oct, 20192.0.2Central18Jul, 20192.0.1Central30Apr, 20192.0.0Central22Jan, 201

mvnrepository.com

 

어떤버전써야함

대부분 뒤에 숫자를 맞추면 된다

 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.spring</groupId>
	<artifactId>mvc</artifactId>
	<name>spring_AdminLTE</name>
	<packaging>war</packaging>
	<version>1.0.0-BUILD-SNAPSHOT</version>
	
	<repositories>
		<repository>
			<id>oracle.ojdbc6</id>
			<url>http://www.datanucleus.org/downloads/maven2/</url>
		</repository>
	</repositories>		
	
		
	<properties>
		<java-version>1.8</java-version>
		<org.springframework-version>4.2.3.RELEASE</org.springframework-version>
		
		<oracle.ojdbc-version>11.2.0.3</oracle.ojdbc-version>
		<commons.dbcp2-version>2.5.0</commons.dbcp2-version>
		<org.mybatis-version>3.5.3</org.mybatis-version>
		<org.springframework-version>2.0.3</org.springframework-version>
		
		<org.aspectj-version>1.6.10</org.aspectj-version>
		<org.slf4j-version>1.6.6</org.slf4j-version>
	</properties>
	<dependencies>
		<!-- 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>oracle</groupId>
		    <artifactId>ojdbc6</artifactId>
		    <version>${oracle.ojdbc-version}</version>
		</dependency>
		
		<dependency>
		    <groupId>org.apache.commons</groupId>
		    <artifactId>commons-dbcp2</artifactId>
		    <version>${commons.dbcp2-version}</version>
		</dependency>
	
		<dependency>
		    <groupId>org.mybatis</groupId>
		    <artifactId>mybatis</artifactId>
		    <version>${org.mybatis-version}</version>
		</dependency>
	
		<dependency>
	    	<groupId>org.mybatis</groupId>
	    	<artifactId>mybatis-spring</artifactId>
	    	<version>${org.mybatis.spring-version}</version>
		</dependency>
	
	
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>
		
	
						
		
		<!-- AspectJ -->
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjrt</artifactId>
			<version>${org.aspectj-version}</version>
		</dependency>	
		
		<!-- Logging -->
		<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>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.15</version>
			<exclusions>
				<exclusion>
					<groupId>javax.mail</groupId>
					<artifactId>mail</artifactId>
				</exclusion>
				<exclusion>
					<groupId>javax.jms</groupId>
					<artifactId>jms</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.sun.jdmk</groupId>
					<artifactId>jmxtools</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.sun.jmx</groupId>
					<artifactId>jmxri</artifactId>
				</exclusion>
			</exclusions>
			<scope>runtime</scope>
		</dependency>

		<!-- @Inject -->
		<dependency>
			<groupId>javax.inject</groupId>
			<artifactId>javax.inject</artifactId>
			<version>1</version>
		</dependency>
				
		<!-- Servlet -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.5</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet.jsp</groupId>
			<artifactId>jsp-api</artifactId>
			<version>2.1</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>
	
		<!-- Test -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>        
	</dependencies>
    <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>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</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>
        </plugins>
    </build>
</project>

이제 준비끝

 

데이터소스잡으러가면됨

 

web.xml

 

 

우리가 전에 의존주입시키기위해서 initlistener 만들엇엇음

그 목적은  application context를 로딩하기위함이엇음

근데 스프링은 로딩해주는 로더를 따로하나만들엇음

context loader listener 라고 context를 로딩해주는 로더가 있음 이 로더를 톰캣 시작시에 실행해야함

context loader를 웹 시작시 구동시켜야하니까 이름이 ~listener인거임 이 리스너가로더를 발동시키고 이때 로더가 인스턴스를 만들어서 container (타입은 application context)

실제로 인스턴스만드는건 loader 임 그니까 bean xml 을 줘야함

즉 로더호출하면서 xml 줘야함 

근데리스너는 xml 경로모르기떄문에

xml의 url을 context param으로 줘서 리스너가 로더에게 xml 을 건넬수잇구

로더는 그걸 읽어내면서 빈을 만들고 조립을 appliscation context (map)으로 넣게된다

시작점은 listener인데 이게 만들어지는시점은 톰캣 시작할떄 (사요자요청들어오기전에)

application context도 만들어져있음 . 로더도 만들어져잇음

우리가 만들건 xml잘 만들도 context param 경로 잘 주면 됨

 

옮기자

 

여기다가 빈등록을 죄다할수도있지만 쪼개려고 함 (import 기능이잇음) 

 

context는 아키텍쳐별로 만들던지 기능별로 만들던지..

 

주입시켜줘야하는건 property인데

번거로워서

 p name space를 따로만들어놓음

프로퍼티를 속성의 name으로 바꿔주는녀석

 

게다가 프로퍼티 셋메서드를 기억하고있지않아도 자동완성으로 보여줌

이게 다 셋메서드에 있딴말임

이걸 프로퍼티로 만들면 좋겟다 저번에 만든거 가져오자

db.properties 가져오기

root 의 namespace에 context 체크하고

 

properties 다읽음 (마치 필터처럼()

]

이것도 패터닝 근데 이렇게하면 빈ㅌ그래프안나오기떄문에 수업때는

 

 

모든프로퍼티에서 딱 하나인걸로 만드는 법 접두사를 붙여주기

마이바티스 세팅하러가자

 

 

sql config에 박아놨기때문에 문제되는것들 (데이터소스, 매퍼경로) 들을 밖으로 빼고싶다

이걸 자바로 만들엇다면 분명히 setmethod할수있게만들엇을거임

그걸 p 태그로 떨어져나오게 되어잇음 (외부에서주입할수있또록)

위에 만들어뒀으니까 레퍼런스

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

	<bean 	id="dataSource" 
			class="org.apache.commons.dbcp2.BasicDataSource" 
			p:driverClassName="${jdbc.driverClassName}"
			p:url="${jdbc.url}"
			p:username="${jdbc.username}"
			p:password="${jdbc.password}"
			/>
			
	<bean id="sqlSessionFactory"
		class = "org.mybatis.spring.SqlSessionFactoryBean"
		p:dataSource-ref="dataSource"
		p:configuration=""
		p:mapperLocations=""
		/>

</beans>

 

 

고치기

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
	<properties resource="com/jquery/properties/db.properties" />

	<typeAliases>
		<typeAlias type="java.lang.String" alias="str" />
		<typeAlias type="java.lang.Integer" alias="int" />
		
		<typeAlias type="com.jquery.command.SearchCriteria" alias="cri" />
		<typeAlias type="com.jquery.dto.MenuVO" alias="menu" />
		<typeAlias type="com.jquery.dto.BoardVO" alias="board" />
		<typeAlias type="com.jquery.dto.ReplyVO" alias="reply" />
		<typeAlias type="com.jquery.dto.AttachVO" alias="attach" />
		<typeAlias type="com.jquery.dto.MemberVO" alias="member"/>

	</typeAliases>

	<environments default="dev">
		<environment id="dev">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="${driverClassName}" />
				<property name="url" value="${url}" />
				<property name="username" value="${username}" />
				<property name="password" value="${password}" />
				
				<!-- pool setting -->
				<property value="2" name="poolMaximumActiveConnections"/>
				<property value="3" name="poolMaximumIdleConnections"/>
				
			</dataSource>
		</environment>
	</environments>
	
	<mappers> 
		<mapper resource="com/jquery/mybatis/mappers/Menu-Mapper.xml"/>
		<mapper resource="com/jquery/mybatis/mappers/Board-Mapper.xml"/>
		<mapper resource="com/jquery/mybatis/mappers/Reply-Mapper.xml"/>
		<mapper resource="com/jquery/mybatis/mappers/Attach-Mapper.xml"/>
		<mapper resource="com/jquery/mybatis/mappers/Member-Mapper.xml"/>
	</mappers>	
</configuration>








ㄷㅔ이터소스 따로잡았으니까 enviroment 삭제하고

맵퍼도 삭제

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

	<typeAliases>
		<typeAlias type="java.lang.String" alias="str" />
		<typeAlias type="java.lang.Integer" alias="int" />
		
		<typeAlias type="kr.or.ddit.SearchCriteria" alias="cri" />
		<typeAlias type="kr.or.ddit.dto.MenuVO" alias="menu" />
		<typeAlias type="kr.or.ddit.dto.BoardVO" alias="board" />
		<typeAlias type="kr.or.ddit.dto.ReplyVO" alias="reply" />
		<typeAlias type="kr.or.ddit.dto.AttachVO" alias="attach" />
		<typeAlias type="kr.or.ddit.dto.MemberVO" alias="member"/>

	</typeAliases>

	
	
	
</configuration>



 

커넥션 갯수가 너무 늘어나는걸 방지하기위해  total  은 반납햇을떄 갯수임

 

sqlsession factory 까지 끝난다.

mabatis sql session factory 가 아니고 factory bean이라는걸 꼭 기억하자


셋메서드ㄱ도 있지만 생성시 초기화되는건 생성자임. 

인스턴스ㅡㄹ 만들떄 (만든후말고 전!!!! 그래서 생성자인거임) factory를 가져와서 거기서  지가 opensession을 한다..? <

즉 주입을 컨스트럭트 (생성자)로 해줘야함

 

셋메서드는 property 라 p

컨스트럭터는 c

 

 

이제 서비스에서 받아서 쓰기만 하면 됨

 

 

주입됨

마이바티스는 자체 트렌젝션을 가지고잇어서 커밋따로 안해도됨

마이바티스-스프링은 트렌젝션 매니저가 없음. 알아서쓰라고 빼놓은거임

그래서 따로 우리가 넣어줘야함

 

같은 데이터소스에서 가지쳐서 스프링트렌젝션매니저를 만들어서 얘한테 먹여주면 데이터소스에서 무슨일이 발생하면 매니저가 감시한다

 

근데 엄한데꺼 쓰면 안맞을수있으니까 spring에서 가져온 트렌젝션매니저를 쓰자

 

한 세션에서 터지면 롤백 되면 커밋.. 즉 매니저는 

 

얘만 감시

트랜젝션은 jdbc6 모듈에 있다!

트랜잭션때무넹 스프링jdbc 가져와야함

 

얘가 커밋롤백해주니까 커밋롤백했던 코드 다 사라지는거임

 

이걸 관점지향적으로 만들거임

 

트렌젝션 매니저는 따로 독립된권한을 갖게된다.

 

 

서비스dao 다 가져올거임 내일은

단위테스트

 

loc header 는 repository 다 날리고 다시해야함

즉 멀쩡할때  repository 어디다따로넣어놔야함

 

톰켓돌리면

INFO : org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization started
INFO : org.springframework.web.context.support.XmlWebApplicationContext - Refreshing Root WebApplicationContext: startup date [Tue Mar 02 16:30:59 KST 2021]; root of context hierarchy
INFO : org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [kr/or/ddit/context/root-context.xml]
INFO : org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [kr/or/ddit/context/dataSource-context.xml]
INFO : org.springframework.context.support.PropertySourcesPlaceholderConfigurer - Loading properties file from file [D:\A_TeachingMaterial\6.JspSpring\sts\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\spring_AdminLTE\WEB-INF\classes\kr\or\ddit\properties\db.properties]
INFO : org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 880 ms
3월 02, 2021 4:31:00 오후 org.apache.catalina.core.ApplicationContext log
정보: Initializing Spring FrameworkServlet 'appServlet'
INFO : org.springframework.web.servlet.DispatcherServlet - FrameworkServlet 'appServlet': initialization started
INFO : org.springframework.web.context.support.XmlWebApplicationContext - Refreshing WebApplicationContext for namespace 'appServlet-servlet': startup date [Tue Mar 02 16:31:00 KST 2021]; parent: Root WebApplicationContext
INFO : org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from ServletContext resource [/WEB-INF/spring/appServlet/servlet-context.xml]
INFO : org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor - JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
INFO : org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Mapped "{[/],methods=[GET]}" onto public java.lang.String com.spring.mvc.HomeController.home(java.util.Locale,org.springframework.ui.Model)
INFO : org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter - Looking for @ControllerAdvice: WebApplicationContext for namespace 'appServlet-servlet': startup date [Tue Mar 02 16:31:00 KST 2021]; parent: Root WebApplicationContext
INFO : org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter - Looking for @ControllerAdvice: WebApplicationContext for namespace 'appServlet-servlet': startup date [Tue Mar 02 16:31:00 KST 2021]; parent: Root WebApplicationContext
INFO : org.springframework.web.servlet.handler.SimpleUrlHandlerMapping - Mapped URL path [/resources/**] onto handler 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#0'
INFO : org.springframework.web.servlet.DispatcherServlet - FrameworkServlet 'appServlet': initialization completed in 543 ms
3월 02, 2021 4:31:01 오후 org.apache.coyote.AbstractProtocol start
정보: 프로토콜 핸들러 ["http-bio-80"]을(를) 시작합니다.
3월 02, 2021 4:31:01 오후 org.apache.catalina.startup.Catalina start
정보: Server startup in 3641 ms

test 해보자

1.datasourse

2.sqlsession ; 원인은 하나 factory 문제

 

템플릿을 한번써보자

package spring_AdminLTE;

import static org.junit.Assert.*;

import org.junit.Test;

public class TestDataSource {

	@Test
	public void test() {
		fail("Not yet implemented");
	}

}

 

이게 제이유닛 템플릿인데 .. 그닥쓸모강벗다.

 

exclusion dependency할때 exclusions 되어있는 부분이있는데

왜 이걸 ㅜ저야하냐면 커플 자르들이 같이오면서 먼저있넌 자르와 충돌이 나면 둘다안됨

어떤 디펜던시 추가할때는 커플로 들어오는 자르가 뭔지 꼭확인해야함

 

테스트할때마다 해야할녀석은 before

테스트 끝날때마다 수행해야하는 메서드 after

테스트할때마다 새로 커넥션 받아야함

 

테스트에 순서가 있거나, 테스트에 쓰이는 전역변수가 테스트1에서 할당된거를 2에서 또쓰고 이러면 테스트가 기인된다. 독립적으로 수행되도록 해야한다.

 

 

 

 

 

 

우리가 지금 프로퍼티를 루트에서 읽도록 해놧음

근데 읽는 컨텍스트는 데이터소스컨텍스트만 읽음 그래서 프로퍼티를 읽어올수가없음

즉 시나리오의 잘못임

즉 데이터소스컨텍스트를 가져올게아니고 루트컨텍스트를 가져왓어야햇다.

 

 

테스트2

 

화이트박스 테스트니까

 

 

여기까지 통과면 데이터소스믄 문제가없다.

 

멤버브이오도 못믿겠따! 하면 

package kr.or.ddit.test;
//sqlsessionfactory와 sqlsession를 위한 테스트

import java.sql.SQLException;
import java.util.Collection;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionException;
import org.apache.ibatis.session.SqlSessionFactory;//아이바티스...실제로빈등록된건스프팅패키진데 상속받아만들엇기떄문에가능한것
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:kr/or/ddit/context/root-context.xml")
public class TestMybatis {

	@Autowired
	private SqlSessionFactory sqlSessionFactory;
	
	@Autowired
	private SqlSession session;//sqlsession template은 sqlsession 상속받아서만들었기대문에 가능
	
	
	@Test
	public void testSqlSessionFactory() {
		Assert.assertNotNull(sqlSessionFactory);
		
	}
	
	//sql세션에 대한 테스트
	//맵을 잘 읽어서 쿼리문을 잘 던지는지 확인
	@Test
	public void sqlSessionTest() throws SQLException{
		Collection<String> mapNames = (Collection<String>)session.getConfiguration().getMappedStatementNames();
		
		Assert.assertTrue(mapNames.contains("Member-Mapper.selectSearchMemberList"));
	}
}

 

sql세션팩토리와 sql세션에 문제없음을 확인

 

(sql문 자체는 디벨로퍼로 확인하기~~~)

 

이게 다 끝나면 dao작업하기 시작하는거임