ORM(Object Relational Mapping)
๐ก ๊ฐ์ฒด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ๋งคํ(์ฐ๊ฒฐ)ํด์ฃผ๋ ๊ธฐ์
- ๊ฐ์ฒด ๋ชจ๋ธ(๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํด๋์ค)๊ณผ ๊ด๊ณํ ๋ชจ๋ธ(๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ) ๊ฐ์ ๋ถ์ผ์น ์กด์ฌ
- ORM์ ํตํด ๊ฐ์ฒด ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ฐํ์ผ๋ก SQL์ ์๋์ผ๋ก ์์ฑํ์ฌ ๋ถ์ผ์น ํด๊ฒฐ
- ๋ํ์ ์ธ ๊ธฐ์ ๋ก JPA ๋ฑ์ด ์์ง๋ง Mybatis๋ ์ง์ ์ฟผ๋ฆฌ๋ฅผ ๋ช ์ํ๊ธฐ ๋๋ฌธ์ ORM์ผ๋ก ๋ณด๊ธฐ ํ๋ฆ
Mybatis๋
- ์๋ฐ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋ก๊ทธ๋๋ฐ์ ๋ ์ฝ๊ฒ ํ ์ ์๋๋ก ๋์์ฃผ๋ ํ๋ ์์ํฌ
- ๋ณต์กํ JDBC ์ฝ๋๋ฅผ ๊น๋ํ๊ฒ ์ ์งํ ์ ์๋๋ก ํด์ค(JDBC์ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ ๊ณต)
- ์๋ฐ์ ๊ฐ์ฒด(Object)์ SQL ์ฌ์ด์ ์๋ ๋งคํ
gradle
// Mybatis ์ถ๊ฐ
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.4'
application.properties
// JDBC ๋๋ผ์ด๋ฒ ํด๋์ค ์ด๋ฆ ์ง์ : MySQL JDBC Driver
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
// DB์ IP์ ์คํค๋ง ์ด๋ฆ ์ง์
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=yes&characterEncoding=UTF-8
// DB์ ์ฐ๊ฒฐํ ๊ณ์ ์ค์
spring.datasource.username=root
spring.datasource.password=root
// xml์์ ์ฟผ๋ฆฌ ์์ฑ ์, resultType์ด ์์นํ๋ ๊ฒฝ๋ก ์์ฑ -> Mybatis๊ฐ ์ฐพ์์ ๋งคํ
mybatis.type-aliases-package=com.example.demo.model
User.java
@Getter
@Setter
public class User {
private int id;
private String name;
private String part;
}
UserMapper.java
@Mapper
public interface UserMapper {
List<Users> findAll();
void userAdd(User user);
}
- Spring IoC ์ปจํ ์ด๋์ Service Bean์ผ๋ก ๋ฑ๋ก
- ํด๋น ์ธํฐํ์ด์ค์ ๋ฑ๋ก๋ SQL Annotation์ ๋ฐํ์ผ๋ก ์ค์ SQL๋ฌธ์ ์คํ์ํด
UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="test.demo.mapper.UserMapper">
<select id="findALl" resultType="User">
SELECT * FROM user;
</select>
<insert id="userAdd">
INSERT user (name, part) VALUES (#{name}, #{part})
</insert>
</mapper>
- namespace: UserMapper ์ธํฐํ์ด์ค๊ฐ ์กด์ฌํ๋ ๊ฒฝ๋ก ์ง์
- id: @Mapper๊ฐ ์๋ ์ธํฐํ์ด์ค์์ ์ฌ์ฉํ ๋ฉ์๋ ์ด๋ฆ ์ง์
- resultType: ๋ฐํ ๊ฐ ํ ์ง์
- ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ ์๋์ผ๋ก ๋งคํ๋์ด ์ฑ์์ง๊ธฐ ๋๋ฌธ์, DB ์ปฌ๋ผ์ ๊ฒฐ๊ณผ์ resultType ํด๋์ค์ setter ๋ฉ์๋๊ฐ ์ ํํ ์ผ์นํด์ผ ํจ
- #{ํ๋๋ช } : ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌ ๋ฐ์ ๊ฐ์ฒด์ ํ๋ ๋์ ๋ฐ์ธ๋ฉ
์ฐธ๊ณ
'DB > DataAccess' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DB] JDBC๋? (0) | 2022.08.24 |
---|