1. db계정 생성
// DB서버 접속
sqlplus sys/java@localhost:1521 as sysdba
// 계정 생성
SQL> create user dev identified by java;
사용자가 생성되었습니다.
// 권한 부여
SQL> grant connect, resource, dba to dev;
권한이 부여되었습니다.
// 생성 계정확인
SQL> select * from all_users;
2. 테이블 생성
create table board(
board_no number(8) not null,
title varchar2(200) not null,
content varchar2(4000) not null,
writer varchar2(200) not null,
reg_date date default sysdate null,
constraint pk_board primary key(board_no)
);
create sequence seq_board increment by 1 start with 1 nocache;
create table member(
user_no number(8) not null,
user_id varchar2(50) not null,
user_pw varchar2(100) not null,
user_naem varchar2(100) not null,
coin number(8) default 0 null,
reg_date date default sysdate null,
upd_date date default sysdate null,
enabled varchar2(10) default '1' null,
constraint pk_member primary key(user_no)
);
create sequence seq_member increment by 1 start with 1 nocache;
create table member_auth(
user_no number(8) not null,
auth varchar2(50) not null,
constraint fk_member_auth_user_no foreign key(user_no)
references member(user_no)
);
3. pom.xml 메이븐 의존성
<!-- 데이터베이스 라이브러리 의존 관계 정의시작 -->
<!-- XML로 쿼리를 작성하게 해주는 라이브러리 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.10</version>
</dependency>
<!-- 스프링과 mybatis를 연동하게 해주는 라이브러리 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.4</version>
</dependency>
<!-- 스프링에서 JDBC(Java DataBase Connectivity) -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!--
dbcp : database connection pool => 커넥션 객체를 미리 만들어 놓고 쓰고 반납
미리 커넥션 객체를 여러개 ㅁ나들어 놓고 가용해야할 때 커넥션을 들고가서 사용하다가 다시 반납한다.
최근에는 hikaripcp를 사용하는 경우도 있음
-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.7.0</version>
</dependency>
<!-- 로깅을 위한 라이브러리 쿼리를 console이나 파일 로드로 볼 수 있다. -->
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4</artifactId>
<version>1.16</version>
</dependency>
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>21.1.0.0</version>
</dependency>
<!-- 데이터베이스 라이브러리 의존 관계 정의 끝 -->
4. root-context.xml 설정
<!--
root-context.xml : 스프링 설정을 위한 파일
스프링 설정이란?
- view와 관련되지 않은 객체를 정의
- Service(비즈니스 기능), DAO(repository: 저장소), DB 비즈니스 로직과 관련된 설정
- BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName() = "oracle.jdbc.driver.OracleDriver";
-->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracl.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
<property name="username" value="dev"/>
<property name="password" value="java"/>
</bean>
<!--
데이터베이스와 연결을 맺고 끊어질 때까지의 라이프 사이클을 관리해주는 SqlSessionTemplate 객체를 생성한다.
1) dataSource
2) Mapper xml의 위치 지정
-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath:/sqlmap/**/*_SQL.xml"/>
<property name="configLocation" value="/WEB-INF/mybatisAlias/mybatisAlias.xml"/>
</bean>
<!--
데이터베이스에 개발적으로 쿼리를 실행시키는 객체
이 객체를 통해서 query를 실행한다.
-->
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg name="sqlSessionFactory" index="0" ref="sqlSessionFactory"/>
</bean>
<!--
Mapper 인터페이스 설정
개발자가 직접 DAO를 설정하지 않아도 자동으로 Mapper 인터페이스를 활용하는 객체를 생성하게 된다.
-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="kr.or.ddit.mapper"/>
</bean>
5. mybatisAlias 파일 생성
- root-context.xml에서 지정한 위치에 파일을 생성해준다.
- dtd 링크 주소는 마이바티스 사이트에서 받는다.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--
[마이바티스] 스프링에서 "_"를 사용한 컬럼명 사용 시(BOOK테이블의 BOOK_ID와 같은 컬럼)
카멜케이스로 읽어주는 역할 (bookId와 같이)
ex) 테이블 컬럼명이 member_id인 경우 jsp화면단에서 이 값을 사용시 memberId로 사용할 수 있다.
-->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<!-- 자주사용하는 타입의 별칭을 셋팅 -->
<typeAliases>
<!-- <typeAlias type="클래스명(패키지구조를 포함한)" alias="별칭명"/> -->
</typeAliases>
</configuration>
6. blank_SQL.xml 생성
- 초기에 dummy mapper 파일을 생성해야 서버가 시작되므로 만들어준다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="blank">
</mapper>
7. Mapper 인터페이스 생성
- root-context.xml에서 설정한 패키지 위치에 인터페이스를 생성한다.
8. mapper.xml 수정
- quailfied 매핑해준다.
'Spring' 카테고리의 다른 글
[스프링Security] 어노테이션 사용 설정 (0) | 2023.06.16 |
---|---|
[스프링Legacy] Spring Security 프로젝트 초기설정 (STS, 이클립스) (0) | 2023.06.14 |
[스프링MVC] Form타입 Fileupload 방법 (commons-fileupload) (0) | 2023.05.24 |
[스프링MVC] @RequestMapping 어노테이션 총 정리 (0) | 2023.05.23 |
[스프링MVC] Controller의 기본 .jsp 단축경로 설정하기 servlet-context.xml (0) | 2023.05.23 |
댓글