데이터 영속성 (Data Persistence)
ORM (Object Relational Mapping)
| DB 테이블 (컬럼) | Java 객체 (필드) |
|---|---|
| id: int | int id |
| name: varchar(20) | String name |
| birth: char(10) | String birth |
| hp: varchar(13) | String hp |
| year: tinyint | int year |
MyBatis
| 컴포넌트 | 설명 |
|---|---|
| SqlSessionFactory | SqlSessionFactory를 Spring의 빈으로 등록하는 클래스 |
| SqlSessionTemplate | MyBatis의 SqlSession을 Spring에서 사용할 수 있게 해줌 |
| Mapper Interface | SQL 쿼리와 매핑 파일을 연결하는 인터페이스 |
| Mapper XML | SQL을 정의하는 XML 파일 |
| @MapperScan | MyBatis Mapper 인터페이스를 스캔 |
| @Mapper | Mapper 인터페이스를 Spring 빈으로 등록하는 어노테이션 |
<?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="kr.co.ch05.dao.User1Mapper">
<insert id="insertUser1">
INSERT INTO `user1` VALUES (#{uid}, #{name}, #{hp}, #{age});
</insert>
<select id="selectAllUser1" resultType="kr.co.ch05.dto.User1DTO">
SELECT * FROM `user1`;
</select>
<select id="selectUser1" resultType="kr.co.ch05.dto.User1DTO">
SELECT * FROM `user1` WHERE `uid`=#{uid};
</select>
<update id="updateUser1">
UPDATE user1 SET name=#{name}, hp=#{hp}, age=#{age} WHERE uid=#{uid};
</update>
<delete id="deleteUser1">
DELETE FROM `user1` WHERE uid=#{uid};
</delete>
</mapper>
package kr.co.ch05.service;
import kr.co.ch05.dao.User1Mapper;
import kr.co.ch05.dto.User1DTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class User1Service {
private final User1Mapper user1Mapper;
@Autowired
public User1Service(User1Mapper user1Mapper) {
this.user1Mapper = user1Mapper;
}
public void register(User1DTO user1DTO) {
user1Mapper.insertUser1(user1DTO);
}
public List<User1DTO> findAll() {
return user1Mapper.selectAllUser1();
}
public User1DTO findById(String uid) {
return user1Mapper.selectUser1(uid);
}
public void modify(User1DTO user1DTO) {
user1Mapper.updateUser1(user1DTO);
}
public void delete(String uid) {
user1Mapper.deleteUser1(uid);
}
}