본문으로 바로가기

스프링[Spring] 게시판 만들기_01

category 언어/Spring 2020. 6. 24. 16:11
728x90

1.  프로젝트 생성

 

eclipse 창에서 new->spring Legacy Project 클릭 후, 

Project Name : MyBoard, Templates : Spring MVC Project,

Package Name : com.myboard.controller로 설정한다.

 

생성하였다면, 잘 실행되는지 Run as를 통해 실행시켜본다.

이때, 아래와 같이 한글이 깨지는 경우가 발생하기도 한다.

 

이럴 때는, 기본경로인

src->main->webapp->WEB-INF->views->home.jsp에서 

 

<%@ page session="false" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>

다음과 같은 page 디렉티브 속성을 추가해주면 된다.

 

다시 실행해보면 위와 같이 나타나게 된다.

 

 

2. pom.xml 설정 바꾸기 (개인마다 차이가 있음)

 

(1) 자바 버전 업그레이드

 

먼저, 버전을 업그레이드 하기 위해

자바버전을 1.8, springframework버전을 5.2.5로 설정한다.

 

<properties> 
<java-version>1.8</java-version> 
<org.springframework-version>5.2.5.RELEASE</org.springframework-version> 
<org.aspectj-version>1.6.10</org.aspectj-version> 
<org.slf4j-version>1.6.6</org.slf4j-version> 
</properties>

 

(2) 단위테스트 사용

 

구글에서 maven repo 검색-> junit을 검색해보면,

4.12버전이 가장 많이 쓰이고 있으므로, 버전을 변경해준다.

 

<dependency> 
<groupId>junit</groupId> 
<artifactId>junit</artifactId> 
<version>4.12</version> 
<scope>test</scope> 
</dependency>

 

(3) log4j 사용

 

마찬가지로, maven repo->log4j는 1.2.17버전이 가장 많이 쓰이므로 기존의 것들을 지우고

아래와 같이 변경해준다.

 

<dependency> 
    <groupId>log4j</groupId> 
    <artifactId>log4j</artifactId> 
    <version>1.2.17</version> 
</dependency>

 

(4) DB와의 연결을 위해 hikari를 사용

 

https://github.com/brettwooldridge/HikariCP 의 내용을 바탕으로 

 

pom.xml에

 

<!-- DB -->

<!-- https://mvnrepository.com/artifact/com.zaxxer/HikariCP -->

<dependency>

<groupId>com.zaxxer</groupId>

<artifactId>HikariCP</artifactId>

<version>3.4.5</version>

</dependency>

 

추가 후, XML을 통해 빈을 등록하기 위해 root-context.xml에 

(root-context.xml : 스프링 설정 파일)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
	
	<!-- Root Context: defines shared resources visible to all other web components -->
	<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig"> <!-- 이런 용어들은 외우는 것이 아니라 검색해보면 나옴 -->
		<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
		<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:XE"></property>
		<property name="username" value="scott"></property>
		<property name="password" value="TIGER"></property>
		<property name="connectionTestQuery" value="SELECT 1 FROM DUAL"></property>
	</bean>
	
	<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"
		destroy-method="close">
		<constructor-arg ref="hikariConfig"></constructor-arg>
	</bean>
		
</beans>

 

bean을 추가해준다. (참고로, 기존의 db에 있는 scott를 사용하기 위한 모습이다.)

 

(5) mybatis 사용

 

추가해야하는 라이브러리

- spring-jdbc : 데이터베이스 처리
- sprin-tx : 트랜잭션 처리
- mybatis : MyBatis 본체
- mybatis-spring : MyBatis와 스프링의 연동용 라이브러리

 

다음과 같은 라이브러리를 추가해줘야 한다.

 

따라서,

 

maven repo -> spring jdbc를 통해

<dependency> 
<groupId>org.springframework</groupId> 
<artifactId>spring-jdbc</artifactId> 
<version>${org.springframework-version}</version> <!-- 5.2.5 version이랑 동일 --> 
</dependency>

 

maven repo -> spring transaction를 통해

<dependency> 
<groupId>org.springframework</groupId> 
<artifactId>spring-tx</artifactId> 
<version>${org.springframework-version}</version> 
</dependency>

 

maven repo -> mybatis 3.4.6를 통해

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.6</version>
</dependency>

 

maven repo -> mybatis spring 1.3.2를 통해

<dependency> 
    <groupId>org.mybatis</groupId> 
    <artifactId>mybatis-spring</artifactId> 
    <version>1.3.2</version> 
</dependency>

 

를 추가해준다.

 

# SqlSessionFactory

 

SQLSession을 만들어내는 클래스

MyBatis는 팩토리에서 받은 SQLSession을 이용해 DB를 다룬다.

 

-root.conext.xml에 빈을 등록해서 사용한다.

 

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
	<property name="dataSource" ref="dataSource"/>	
	<!-- dataSource는 hikari datasource Beans Graph참고 -->
</bean>

 

# mapper 인터페이스 사용

 

* 인터페이스로 사용하는 이유 
클래스를 사용하면 상속을 하나밖에 못받지만,  
인터페이스를 사용하면 여러개를 구현받을 수 있기 때문에 이것을 이용해 MyBatis를 사용한다.

 

사용하기 위해서

 

1. root-context.xml -> Namespaces 탭 -> mybatis-spring에 체크

이후, Source 탭에서

<mybatis-spring:scan base-package="com.myboard.mapper"/>

위와 같이 코드 추가

 

 

(6) 스프링 테스트 사용

 

pom.xml에 스프링 테스트 추가

<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-test</artifactId>
	<version>${org.springframework-version}</version>
	<scope>test</scope>
</dependency>

 

 

3. 자바와 오라클 JDBC 연동

 

연동을 하기 위해서는, 프로젝트의 우클릭 ->Properties -> Java Build Path -> Libraries -> Add External JARs 선택

 

이후 sqldeveloper의 설치 폴더로 이동해서 sqldeveloper->jdbc->lib->ojdbc8 클릭

 

이후 Apply and Close를 해준다.

 

 

728x90