728x90
1. Prologue
2. 개발환경 세팅
A. 개발환경 항목별 버전 체크
B. 개발환경 세팅 과정
1) JDK 설치
2) Eclipse 설치 및 Spring 다운로드
3) Tomcat 설정
4) Spring 프로젝트 생성
* 라이브러리 버전 수정
* 서버 세팅
https://immose93.tistory.com/8 까지의 내용
5) MariaDB, MySQL Workbench 설치 및 샘플 DB 구축
SQL developer로 MySQL Workbench 사용
(MariaDB를 시각적으로나 기능적으로 편하게 사용할 수 있도록 하는 툴이라 생각하면 됨)
theater 스키마 생성 → movie 테이블 생성 → INSERT문 작성하여 data 추가 → SELECT문으로 추가한 data 확인
6) Spring, MariaDB, MyBatis 연동, 데이터 조회
pom.xml 수정
Mybatis가 MariaDB에 접근해서 데이터를 가져올 수 있도록 관련 의존성(dependency)을 주입
로그를 남기기 위한 라이브러리로 log4jdbc-log4j2-jdbc4.1도 의존성 주입
<dependencies></dependencies> 사이 영역에 추가
<!-- DB -->
<!-- Maria DB -->
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>2.0.3</version>
</dependency>
<!-- DBCP 데이터베이스 풀 커넥션 -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<!-- Spring JDBC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.9.RELEASE</version>
</dependency>
<!-- Mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.4</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>
<!-- Mybatis log -->
<!-- https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4.1 -->
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
<version>1.16</version>
</dependency>
root-context.xml 수정
root-context.xml : 웹 이외의 부분을 셋팅하기 위해 존재
위치 : src/main/webapp/WEB-INF/spring/root-context.xml
datasource : DB 연결 정보
(url은 '로컬주소/스키마이름'으로 이루어져 있고, username과 password에 ID와 password를 값으로 입력)
로그 확인을 위해 property에 log4jdb를 추가했음
sqlSessionFactory : 트랜잭션 관리와 쓰레드 처리, DB 연결 및 종료를 관리하는 영역
-> /mybatis 경로에 mybatis 설정 파일인 mybatis-config.xml이, /mybatis/sql 경로에 mybatis mapper 파일이 있음을 명시
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"
value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"></property>
<property name="url"
value="jdbc:log4jdbc:mariadb://127.0.0.1:3306/theater" />
<property name="username" value="root" />
<property name="password" value="root" />
</bean>
<bean id="sqlSessionFactory"
class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation"
value="classpath:/mybatis/mybatis-config.xml"></property>
<property name="mapperLocations"
value="classpath*:/mybatis/sql/*.xml"></property>
</bean>
<bean id="sqlSession"
class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>
</bean>
<!-- <mybatis-spring:scan base-package="com.moses.dao" /> -->
<context:component-scan base-package="com.moses.dao"></context:component-scan>
<context:component-scan base-package="com.moses.service"></context:component-scan>
위 코드를 추가하면
<context:component-scan base-package="com.moses.dao"></context:component-scan>
<context:component-scan base-package="com.moses.service"></context:component-scan>
부분에 The prefix “context” for element “context:component-scan” is not bound. 에러 발생
해결 방법 : Namespaces 탭에서 context를 체크하여 아래 빨간 박스 안의 코드가 추가되도록 함으로써 bound 관련 에러 해결
mybatis-config.xml 작성
mybatis-config.xml : 마이바티스 설정 파일
위치 : src/main/resources/mybatis/mybatis-config.xml
mybatis 폴더 생성 → mybatis-config.xml 생성 → 아래 코드 복붙
typeAliases : VO를 선언하여 mybatis/sql/ 하위의 쿼리들을 실행할 때, resultType, parameterType에 full package name을 쓰지 않고 선언한 alias의 이름만 사용하여 VO를 주고 받을 수 있도록 해줌
<?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="com.moses.vo.MovieVO" alias="movieVO" />
</typeAliases>
</configuration>
Eclipse에서 폴더가 패키지 구조로 표시될 때 해결 방법 : https://ojava.tistory.com/116
logback.xml 작성
logback.xml : 자바 오픈소스 로깅 프레임워크인 logback의 설정 파일
위치 : src/main/resources/logback.xml
logback.xml 생성 → 아래 코드 복붙
Logback Manual : http://logback.qos.ch/manual/index.html
level : ERROR < WARN < INFO < DEBUG < TRACE (해당 레벨 이하의 내용은 다 로그를 찍음)
logback 사용법 : https://jeong-pro.tistory.com/154
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<!-- log4jdbc-log4j2 -->
<logger name="jdbc.sqlonly" level="DEBUG" />
<logger name="jdbc.sqltiming" level="INFO" />
<logger name="jdbc.audit" level="WARN" />
<logger name="jdbc.resultset" level="ERROR" />
<logger name="jdbc.resultsettable" level="ERROR" />
<logger name="jdbc.connection" level="INFO" />
</configuration>
log4jdbc.log4j2.properties 작성
위치 : /src/main/resources/log4jdbc.log4j2.properties
log4jdbc.log4j2.properties 파일 생성 -> 아래 코드 복붙
log4jdbc.drivers=org.mariadb.jdbc.Driver
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.dump.sql.maxlinelength=0
test.xml 작성
위치 : /src/main/resources/mybatis/sql/test.xml
test.xml 생성 → 아래 코드 복붙
DB에 쿼리할 SQL문 작성
resultType=“movieVO” : 데이터를 movieVO에 담겠다는 것을 의미
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.moses.mybatis.sql.test">
<select id="selectMovie" resultType="movieVO">
SELECT MOVIE_NAME, DIRECTOR, TYPES FROM MOVIE
</select>
</mapper>
'Programming > Spring' 카테고리의 다른 글
[Spring] boolean 타입에 대한 @Getter (1) | 2021.05.18 |
---|---|
[Spring] validation (유효성 검사) (0) | 2021.05.12 |
[STS] STS 다크 테마 적용법 (0) | 2021.01.30 |
[Spring] Spring 개발 환경 세팅 (3/3) (0) | 2020.02.16 |
[Spring] Spring 개발 환경 세팅 (1/3) (0) | 2020.02.15 |