본문 바로가기
개발자/백엔드 웹 개발자 과정(국비)

[Mybatis] 사원 관리프로그램 다시 만들기

by 초응 2023. 3. 6.

[MyBatis( 마이바티스)]

- 자바 개발자의 JDBC를 대체하는 퍼시스턴스 프레임 워크(데이터베이스 프로그래밍을 좀 더 쉽게 할 수 있게 도와주는 개발 프레임워크)

ㄴ 보통 ORM 프레임워크로 오해하는 경우가 있으나 , ORM 프레임 워크는 실제 DB쿼리를 객체로 관리하여 객체의 활용에 따른 쿼리 자동생성을 할 수 있다.

- 퍼시스턴스 프레임워크 : SQL을 직접 설계하고  XML로 별도로 관리하고 JDBC API를 내부적으로 처리해주기 때문에 개발자가 직접 JDBC 를 사용할 때의 중복 작업 대부분을 없애준다라는 장점이 있지만 쿼리가 자동 생성되거나 하지는 않음.

 

[MyBatis의 특징]

1. JDBC 프레임 워크이다.

2. 개발자는 SQL을 작성하고 mybatis는 JDBC를 사용해서 실행한다.

3. JDBC를 사용할 때의 try/catch/finally/try/catch를 사용할 필요가 없다.

4. SQL 매퍼(mapper)다. (ORM프레임 워크는 데이터베이스 객체를 자바 객체로 매핑함으로써 객체간의 관계를 바탕으로 SQL을 자동으로 생성해주지만, mybatis는 SQL을 명시해주어야한다.

 

 

ibatis로부터 파생된 mybatis

 

[핵심 설정 파일]

1. sqlMapConfig.xml (mybatis) : driver경로, 계정명 비밀번호 등...(회사에서 mybatis파일이 없다면 sqlMapConfig파일을 찾는다)

2. SqlMap.xml  : sql문

 

[세팅하기]

1.메이븐 중앙 저장소에서 MyBatis  / MyBatis Spring추가 (porm.xml)

더보기

<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.9</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>2.0.6</version>
</dependency>


2. src/main/java에 xml파일 추가 > 이름은 mybatis-config로 한다.

mybatis-config에 아래의 내용을 추가한다.

- 최소한 하나의매퍼가 필요함. <mappers resource에 등록>

<?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>
	<mappers>
  		<mapper resource="sqlMap/empSQL.xml"/>
  	</mappers>
</configuration>

3. 위 mapper resource에 맞춰 mapper xml 파일 생성

<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-mapper.dtd">

4. dispatcher-servlet에 등록

	<!-- myBatis -->
	<!-- 1. dataSource -->
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
		<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"></property>
		<property name="username" value="scott"></property>
		<property name="password" value="1234"></property>
	</bean>
	
	<!-- 2. 트랜잭션 관리자 등록 -->
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	
	<!-- 3. 마이바티스 설정 -->
	<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"></property>
		<property name="configLocation" value="classpath:/mybatis-config.xml"></property>
	</bean>
	<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
		<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactoryBean"></constructor-arg>
	</bean>

 

개발 순서
1. db스키마 설계
2. 디자인설계(컨텐츠 뼈대)
3. 기능구현 (DAO,DTO설계)
3-1. DTO설계
3-2. SQL ID 선정
3-3. SQL 작성
3-4. DAO 설계
4.컨트롤러 
4-1. 명령어 선정.
4-2. 커맨드 클래스
4-3. 등록

5. (3의) empSQL.xml에 쿼리 추가

namespace = 카테고리, 마이바티스에서 의무.필수 속성. 패키지 명명 규칙과 비슷하다.

 

**DAOImple에 private SqlSessionTemplate sqlMap; 멤버변수 선언

기본 인자 생성자 생성.

6. dispatcher-servlet 에 dao등록할때 

<constructor-arg>
<ref bean="sqlSessionTemplate"/>
</constructor-arg>