본문 바로가기
서버 공부

자바 스프링으로 웹 게시판 만들기(2)

by 마루청 2021. 5. 4.
728x90

이전 : maru20564.tistory.com/16

 

자바 스프링으로 웹 게시판 만들기(1)

학교 과제로 자바와 Spring 프레임워크를 통해 웹 게시판을 만들게 되었다. 스프링 프레임워크에 대해 공부하고 문제를 해결하는 과정을 남겨 같은 오류가 생겨도 대처할 수 있도록 할 것이다. 기

maru20564.tistory.com

 

오늘은 DB를 Spring에 연동해보도록 하겠다.

 

 

MariaDB 설치

 

MariaDB를 사용할 것이기 때문에 먼저 Maria DB를 설치한다. 다운로드 링크 : mariadb.com/downloads/

MariaDB는 오픈소스이기 때문에 무료이고, MySQL과 기능이 동일하다.

MySQL 문서 (장고) -> maru20564.tistory.com/8 

 

MySQL Database 와 Django(장고) 서버 연결 방법, 기본 MySQL 명령어

Before 개발 중인 장고 서버와 MySQL 연동이 잘 안됐어서 맨땅에서 DB 공부하는 겸 나중에 참고하려고 작성해둔 글. 마찬가지로 맨땅에서 서버 개발 막 시작하시는 초보분들을 위해 공개함. 내가 틀

maru20564.tistory.com

 

* 나는 전에 MySQL을 사용하면서 Default port인 3306을 사용하였기 때문에 MariaDB로는 3307 포트를 사용할 것이다.

 

장고에서 했던 것과 마찬가지로 root 계정과 실제 사용할 사용자 계정을 만들고, 사용할 Database와 Table을 만들어 사용한다.

사실 이 부분부터는 MySQL에서 했던 것과 마찬가지이다. 필요한 Schema를 가지고 Table을 만든다.

 

 

 

 

DataBase 연동

 

만든 database를 Spring과 연동시킨다. 이 때 mybatis를 사용하여 연동한다. mybatis는 말 그대로 자바와 SQL문을 자동 mapping해주는 기능을 한다. JDBC를 사용하지 않고 SQL문을 xml 파일에 작성함으로서 보다 더 쉽게 사용할 수 있다.

수정해야하는 파일들은 pom.xml, root-context.xml, 이 있다.

 

먼저 pom.xml에 mariadb와 mybatis에 대한 의존성 설정을 추가한다. 위치는 의존성 태그 안에만 넣으면 된다.

		<!-- DB -->
		<!-- Maria DB -->
		<dependency>
    		<groupId>org.mariadb.jdbc</groupId>
    		<artifactId>mariadb-java-client</artifactId>
    		<version>2.3.0</version>
		</dependency>
		
		<!-- mybatis -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.4.6</version>
		</dependency>
	
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.3.2</version>
		</dependency>
	
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>
		
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>
	
		<dependency>
		    <groupId>org.apache.commons</groupId>
		    <artifactId>commons-dbcp2</artifactId>
		    <version>2.6.0</version>
		</dependency>

 

그리고 webapp -> WEB -> INF -> spring -> root-context.xml 에 코드를 추가한다.

<!-- DB -->
	<!-- MariaDB dataSource Bean -->
    <!-- DB랑 연결하기 위한 객체 -->
	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="org.mariadb.jdbc.Driver"/>
		<!-- DB information -->
		<property name="url" value="jdbc:mariadb://localhost:3307/assignment2"/>
		<property name="username" value="2018202057" />
		<property name="password" value="qwerty1234" />
	</bean>
	
	<!-- mybatis sqlSessionFactory Bean -->
    <!-- mybatis랑 스프링을 연결해서 SQL문 실행을 위한 객체 -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<!-- location of source -->
		<property name="configLocation" value="classpath:/mybatis-config.xml" />
		<property name="mapperLocations" value="classpath:/mappers/*Mapper.xml" />
	</bean>	
	
    <!-- Mybatis에서 DAO interface를 이용하기 위해 사용 -->
	<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
    <constructor-arg name="sqlSessionFactory"
                     ref="sqlSessionFactory"></constructor-arg>
	</bean>	

 

그리고 이제 mybatis-config.xml과 SQL문을 담을 폴더를 만든다. 위치는 위에 location을 정해둔 곳과 같은 곳에 만들어주면 된다. 내 위치는 다음과 같다.

 

 

mappers 안에 *Mapper.xml 이라는 의미는 ~~~~Mapper 라는 아무 이름이어도 해당된다는 이야기다. 나는 위에 만든 table을 사용하기 위한 boardMapper.xml을 만들었다. 그리고 mybatis-config.xml과 boardMapper.xml에 기본적인 코드를 작성해둔다.

 

 

여기까지가 기본 DataBase 연동이다.

 

 

Spring에서 DataBase Input

 

실제로 연동이 잘 되었는지 확인하기 위해 이제 이 빈 테이블에 spring에서 값을 입력하여 MariaDB에 저장되는지 확인해보도록 하겠다.

 

그러기 위해선 먼저 DB와 변수가 정확히 대응되는 class를 하나 만들어야 한다. 이것을 VO(value object)라고도 한다. VO는 해당 변수들이 DB에 있는 것과 같아야하고 getter와 setter가 있다. 그리고 VO를 다루는 DAO interface를 만든다.(interface로 만든다) DAO에서 insert, view 등이 진행될 예정이다. 그리고 그 DAO를 SQL문이 작성된 Mapper.xml과 연결시키기 위해 mapper.xml의 namespace를 가져와 insert하도록 하는 implement class 를 만든다. 그리고 사용자가 웹페이지에서 특정 동작을 할 때 해당 명령어가 실행될 수 있도록 controller를 만들고, 웹페이지에서 보여주는 view를 만들면 된다. 그리고 해당 url에 들어가면 (GET Request 발생) view가 controller에 내용을 부탁하여 결과를 Responce한다. 

 

 

728x90

댓글