- ๊ด๋ จ ๊ธ
- [JAVA/WEB] ์น ํ๋ก์ ํธ์ MyBatis ์ธํ ๋ฐ ์ ์ฉํ๊ธฐ
- MyBatis ์ค์ ํ์ผ - SQL Mapper ์์ฑ ๋ฐฉ๋ฒ
MyBatis ์ค์ ํ์ผ ์์ฑ ๋ฐฉ๋ฒ
MyBatis ํ๋ ์์ํฌ๊ฐ ์ฐธ์กฐํ๋ XML ํ์ผ์ MyBatis ์ค์ ํ์ผ๊ณผ SQL mapper ํ์ผ๋ก ๋๋์ด์ง๋ค. ๋ณธ ํฌ์คํ ์์๋ MyBatis ์ค์ ํ์ผ ์์ฑ ๋ฐฉ๋ฒ์ ๋ํด ๋ค๋ฃฐ๊ฒ์ด๋ค.
MyBatis๋
- ์์ฒด ์ปค๋ฅ์ ํ ๊ตฌ์ถ
- ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ ๋ณด๋ฅผ ์ค์ ํด ๋๊ณ ๊ฐ๋ฐ, ํ ์คํธ, ์ด์์ ๋ฐ๋ผ ์ฌ์ฉํ DB ์ง์
- SELECT ๊ฒฐ๊ณผ ์บ์ฑ
- VO(Value Object, ๊ฐ ๊ฐ์ฒด)์ alias ๋ถ์ฌ
๋ฑ์ ๊ธฐ๋ฅ์ ์ง์ํ๋ค.
๋ฐ๋ผ์ MyBatis ์ค์ ํ์ผ์๋ ํด๋น ๊ธฐ๋ฅ์ ์ํํ๋ ๋์ ํ๊ฒฝ์ ์ค์ ํ๋ค.
๋ค์์ MyBatis ์ค์ ํ์ผ์ ์์ด๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="com/atoz_develop/spms/dao/db.properties"/>
<typeAliases>
<typeAlias type="com.atoz_develop.spms.vo.Project" alias="project"/>
<typeAlias type="com.atoz_develop.spms.vo.Member" alias="member"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/atoz_develop/spms/dao/MySqlProjectDao.xml"/>
</mappers>
</configuration>
|
cs |
1. XML๊ณผ DTD ์ ์ธ
๊ฐ์ฅ ๋จผ์ XML ์ ์ธ๊ณผ DTD ์ ์ธ์ด ์จ๋ค.
2. Root Element - <configuration>
MyBatis ์ค์ ์ ๋ฃจํธ ์๋ฆฌ๋จผํธ๋ <configuration>์ด๋ค.
๐ ์ฐธ๊ณ - <configuration>์ DTD ๊ท์น
<!ELEMENT configuration (properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, objectWrapperFactory?, plugins?, environments?, databaseIdProvider?, mappers?)>
๋ค์์ <configurations>์ child elements ์ค ์ฃผ์ ์๋ฆฌ๋จผํธ์ ์ฉ๋๋ฅผ ์ ๋ฆฌํ ํ์ด๋ค.
์๋ฆฌ๋จผํธ | ์ฉ๋ |
properties | ํ๋กํผํฐ ํ์ผ ๊ฒฝ๋ก <property>์ ๊ฐ๋ณ ํ๋กํผํฐ ์ ์ |
settings | ํ๋ ์์ํฌ ์คํ ํ๊ฒฝ ์ค์ |
typeAliases | ์๋ฐ ํด๋์ค ์ด๋ฆ์ ๋ํ alias ์ค์ |
typeHandlers | ์ปฌ๋ผ ๊ฐ์ ์๋ฐ ๊ฐ์ฒด๋ก, ์๋ฐ ๊ฐ์ฒด๋ฅผ ์ปฌ๋ผ ๊ฐ์ผ๋ก ๋ณํํด์ฃผ๋ ํด๋์ค ์ค์ |
environments | ํ๋ ์์ํฌ์์ ์ฌ์ฉํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๋ณด(ํธ๋์ญ์ ๊ด๋ฆฌ์, ๋ฐ์ดํฐ ์์ค) ์ค์ |
mappers | SQL mapper ํ์ผ ๊ฒฝ๋ก |
1) <properties>
๋ณดํต ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ ๋ณด์ฒ๋ผ ์์ฃผ ๋ณ๊ฒฝ๋ ์ ์๋ ๊ฐ์ ํ๋กํผํฐ ํ์ผ์ ์์ฑํ ๋ค ์ด๋ฅผ ์ฐธ์กฐํด์ ๊ฐ์ ๊ฐ์ ธ์ฌ ์ ์๋๋ก ํ๋ค.
<properties>๋ ์ด๋ฐ ์ฉ๋๋ก ์ฌ์ฉํ๋ค.
ํ๋กํผํฐ ํ์ผ์ด CLASSPATH์ ์์ผ๋ฉด resource ์์ฑ์ ์ฌ์ฉํด์ ์ค์ ํ๊ณ CLASSPATH ๋ฐ์ ์์นํ๋ค๋ฉด url ์์ฑ์ ์ฌ์ฉํ๋ค.
* ๊ฐ๋ณ ํ๋กํผํฐ ์ค์
ํ๋กํผํฐ ํ์ผ์ ์ ์๋ ๊ฒ ์ธ์ ์ถ๊ฐ๋ก ํ๋กํผํฐ๋ฅผ ์ ์ํ๋ ค๋ฉด <properties> ํ์์ <property>๋ฅผ ์ค์ ํ๋ค.
1
2
3
4
|
<properties resource="com/atoz_develop/spms/dao/db.properties">
<property name="username" value="lalala"/>
<property name="password" value="lololo"/>
</properties>
|
cs |
* ํ๋กํผํฐ ๊ฐ ์ฐธ์กฐ
ํ๋กํผํฐ ๊ฐ์ ${ํ๋กํผํฐ๋ช } ํ์์ผ๋ก ์ฐธ์กฐํ๋ค.
2) <typeAlias>
SQL mapper ํ์ผ์์ parameterType์ด๋ resultType์ ์ง์ ํ ๋ ๊ธด ์ด๋ฆ์ ํด๋์ค๋ช ๋์ ์งง์ ์ด๋ฆ์ alias๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
<typeAlias>๋ ์ด๋ฐ SQL mapper์์ ์ฌ์ฉํ alias๋ฅผ ์ค์ ํ๋ค.
* SQL Mapper์์ alias ์ฌ์ฉ
MyBatis ์ค์ ํ์ผ์ ์ค์ ๋ alias๋ SQL mapper์์ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ๋ฉด ๋๋ค.
* MyBatis Built-In Alias
MyBatis์๋ int, double, boolean๊ฐ์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ ์ด๋ wrapper ํด๋์ค์ ๋ํด ๋ฏธ๋ฆฌ alias๊ฐ ์ ์๋์ด ์๋ค.
๋ค์์ ๋ฏธ๋ฆฌ ์ ์๋ alias ๋ชฉ๋ก์ด๋ค.
alias | type | alias | type |
_byte | byte | byte | java.lang.Byte |
_short | short | short | java.lang.Short |
_int, _integer | int | int, integer | java.lang.Integer |
_long | long | long | java.lang.Long |
_float | float | float | java.lang.Float |
_double | double | double | java.lang.Double |
_boolean | boolean | boolean | java.lang.Boolean |
string | java.lang.String | date | java.util.Date |
decimal | java.math.BigDecimal | bigdecimal | java.math.BigDecimal |
map | java.util.Map | hashmap | java.util.HashMap |
list | java.util.list | arraylist | java.util.ArrayList |
collection | java.util.Collection | iterator | java.util.Iterator |
object | java.lang.Object |
3) <environments>
๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๊ฒฝ ์ ๋ณด๋ฅผ ์ค์ ํ ๋ ์ฌ์ฉํ๋ค.
์ด ํ๊ทธ๋ฅผ ์ด์ฉํ๋ฉด ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ ์ ๋ณด๋ฅผ ์ค์ ํ ์ ์๋ค.
์ค์ ๋ DB ์ ๋ณด ์ค ํ๋๋ฅผ ์ ํํ ๋ default ์์ฑ์ ์ฌ์ฉํ๋ค.
<environment>์ ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํธ๋์ญ์ ๊ด๋ฆฌ ๋ฐฉ์, ๋ฐ์ดํฐ ์์ค๋ฅผ ์ค์ ํ๋ค.
* <transactionManager>
MyBatis์์ ํธ๋์ญ์ ์ ๊ด๋ฆฌํ๋ ๋ฐฉ์์๋ ๋ ๊ฐ์ง๊ฐ ์๋ค.
ํธ๋์ญ์ ๊ด๋ฆฌ ์ ํ | ์ค๋ช |
JDBC | ์ง์ JDBC์ commit, rollback ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ MyBatis ์์ฒด์์ ํธ๋์ญ์ ์ ๊ด๋ฆฌ |
MANAGED | ์๋ฒ์ ํธ๋์ญ์
๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ด์ฉ ์ฆ Java EE ์๋ฒ๋ ์๋ธ๋ฆฟ ์ปจํ ์ด๋์์ ํธ๋์ญ์ ์ ๊ด๋ฆฌ |
<transactionManager>์ type ์์ฑ์ JDBC ๋๋ MANAGED๋ฅผ ์ง์ ํ๋ฉด ๋๋ค.
* <dataSource>
MyBatis๋ JDBC ํ์ค ์ธํฐํ์ด์ค์ธ javax.sql.DataSource ๊ตฌํ์ฒด๋ฅผ ์ด์ฉํ์ฌ DB ์ปค๋ฅ์ ์ ๋ค๋ฃฌ๋ค.
MyBatis์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฐ์ดํฐ ์์ค ์ ํ์ ๋ค์ ์ธ ๊ฐ์ง๊ฐ ์๋ค.
๋ฐ์ดํฐ ์์ค ์ ํ | ์ค๋ช |
UNPOOLED | DB ์ปค๋ฅ์
์ ์์ฒญํ ๋๋ง๋ค ์ปค๋ฅ์
๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค. ๋์ ์ฑ๋ฅ์ ์๊ตฌํ์ง ์๋ ๋จ์ํ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ ํฉํ๋ค. |
POOLED | MyBatis ์์ฒด DB ์ปค๋ฅ์
ํ์ ์ฌ์ฉํ๋ค. ๋ฏธ๋ฆฌ DB ์ปค๋ฅ์ ๊ฐ์ฒด๋ฅผ ์์ฑํด ๋๊ณ ์์ฒญํ๋ฉด ์ฆ์ ๋ฐํํ๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ ์ด๊ธฐํํ๊ณ ์ฌ์ฉ์๋ฅผ ์ธ์ฆํ๋ ๊ณผ์ ์ด ์๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋น ๋ฅด๋ค. |
JNDI | Java EE ์๋ฒ, ์๋ธ๋ฆฟ ์ปจํ ์ด๋์์ ์ ๊ณตํ๋ ๋ฐ์ดํฐ ์์ค๋ฅผ ์ฌ์ฉํ๋ค. |
<dataSource>์ type ์์ฑ์ UNPOOLED, POOLED ๋๋ JNDI๋ฅผ ์ง์ ํ๋ฉด ๋๋ค.
4) <mappers>
SQL mapper ํ์ผ๋ค์ ์ ๋ณด๋ฅผ ์ค์ ํ๋ค.
๊ฐ mapper ํ์ผ์ <mapper> ํ๊ทธ๋ก ์ ์ํ๋ค.
* resource์ url ์์ฑ
<properties>์ ๋ง์ฐฌ๊ฐ์ง๋ก CLASSPATH์ ์์ ๊ฒฝ์ฐ resource ์์ฑ์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ๊ณ CLASSPATH ์ธ๋ถ์ ์์ ๊ฒฝ์ฐ url ์์ฑ์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ๋ค.
MyBatis ์ค์ ํ์ผ ์์ฑ ๊ฐ์ด๋ ๋ฌธ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ถ ํ์ผ ๋ด์ mybatis-x.x.x.pdf ์ ๊ฐ์ด PDF ํ์ผ๋ก๋ ์ ๊ณต๋๋ค.
ํด๋น ๋ฌธ์๋ฅผ ํจ๊ป ์ฐธ์กฐํ๋ฉด ๋ ์์ธํ ์ ๋ณด๋ฅผ ์ป์ ์ ์๋ค.
- ๊ด๋ จ ๊ธ
- [JAVA/WEB] ์น ํ๋ก์ ํธ์ MyBatis ์ธํ ๋ฐ ์ ์ฉํ๊ธฐ
- MyBatis ์ค์ ํ์ผ - SQL Mapper ์์ฑ ๋ฐฉ๋ฒ
References
์ดํ๊ฐ์ ์๋ฐ ์น ๊ฐ๋ฐ ์ํฌ๋ถ(ํ๋ฆฌ๋ , 2016, ์์ง์)
'Javaยท๏ปฟServletยท๏ปฟJSP > LibraryยทFramework' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
MyBatis ๋์ SQL - <choose>์ <set>์ ์ฌ์ฉํ์ฌ ๋์ SQL ๋ง๋ค๊ธฐ (1) | 2020.02.26 |
---|---|
MyBatis์ Log4J ์ฐ๋ํ๊ธฐ (0) | 2020.02.25 |
MyBatis ์ค์ ํ์ผ - SQL Mapper ์์ฑ ๋ฐฉ๋ฒ (6) | 2020.02.23 |
[JAVA/WEB] ์น ํ๋ก์ ํธ์ MyBatis ์ธํ ๋ฐ ์ ์ฉํ๊ธฐ (0) | 2020.02.23 |
[JSP] JSTL ์ฌ์ฉ ๋ฐฉ๋ฒ - ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ค์ด๋ก๋ ๋ฐ ์ธํ (0) | 2020.02.14 |
๋๊ธ