๐โโ๏ธ XML config๋,
xml ํ์ผ์ ์ค์ ํ์ผ๋ก ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐ
๐โโ๏ธ JAVA config๋,
Java์ Class ํ์ผ์ ์ค์ ํ์ผ๋ก ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐ
ojdbc8.jar
/ mybatis-3.5.11.jar
ํ์ผ ์ฝ์
ojdbc8.jar
/ mybatis-3.5.11.jar
ํ์ผ ์ถ๊ฐ๐ Ref. mybatis.jar ํ์ผ ์ถ๊ฐ ๋ฐฉ๋ฒ
mybatis-3.5.11.jar
์์ ํ์ผ ๋ค์ด๋ก๋๐โ ์ ๊น ! ์ ๋ ๊ฐ์ง ํ์ผ์ ๋ชจ๋ ์ถ๊ฐํด์ผํ๋์?
- Mybatis๊ฐ ๊ตฌํํด๋์ ๊ฒ์ ํ๋ก์ ํธ์ ์ถ๊ฐํด์ผํ๋ฏ๋ก, lib ํด๋์ mybatis api๋ฅผ ์ถ๊ฐํ์ฌ Environment import
- ๋ํ jdbc๋ ๊ฑฐ์ณ์ ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ojdbc8๋ lib ํด๋์ ์ถ๊ฐํด์ผํจ
<?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>
<environments default="dev">
<environment id="dev">
<!-- JDBC์ MANAGED ๋ ์ค ํ๋ ์ ํ ์ฌ๋ฅ
JDBC : ์๋ ์ปค๋ฐ, MANEGED : ์๋ ์ปค๋ฐ -->
<transactionManager type="JDBC"/>
<!-- POOLED์ UNPOOLED ์ ํ ๊ฐ๋ฅ
POOLED : ์ปค๋ฅ์
ํ ์ฌ์ฉ, UNPOOLED : ์ปค๋ฅ์
ํ ๋ฏธ์ฌ์ฉ -->
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
<property name="username" value="C##GREEDY"/>
<property name="password" value="GREEDY"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/greedy/section02/xmlconfig/mapper.xml"/>
</mappers>
</configuration>
public class Application {
public static void main(String[] args) {
String resource = "com/greedy/section02/xmlconfig/mybatis-config.xml";
try {
InputStream inputStream = Resources.getResourceAsStream(resource);
// : resource์ ์
๋ ฅ์คํธ๋ฆผ์ผ๋ก ์ฝ์ด์ด
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// ์ค์ ํ์ผ์ ์ฝ์ด์ค๋ inputStream์ ์ ๋ฌ
SqlSession sqlSession = sqlSessionFactory.openSession(false);
java.util.Date date = sqlSession.selectOne("mapper.selectSysdate");
// : mapper๋ผ๋ namespace์ selectSysdate์ธ ๊ตฌ๋ฌธ ์กฐํํ ๊ฒ
// selectOne, selectList, selectMap, insert, update, delete ๋ฑ ์ฌ์ฉ๊ฐ๋ฅ
System.out.println(date);
sqlSession.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
<?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="mapper">
<select id="selectSysdate" resultType="java.util.Date">
<!-- : ์กฐํํ ํ์
์ด Dateํ์
์์ ๋ช
์ -->
SELECT
SYSDATE
FROM DUAL
</select>
</mapper>
public class Application {
/* ์ ์์ ๋ณด */
private static String DRIVER = "oracle.jdbc.driver.OracleDriver";
private static String URL = "jdbc:oracle:thin:@localhost:1521:xe";
private static String USER = "C##GREEDY";
private static String PASSWORD = "GREEDY";
public static void main(String[] args) {
Environment environment =
new Environment("dev" // ํ๊ฒฝ ์ ๋ณด ์ด๋ฆ
, new JdbcTransactionFactory() // ํธ๋์ญ์
๋งค๋์ ์ ์ข
๋ฅ ๊ฒฐ์
, new PooledDataSource(DRIVER, URL, USER, PASSWORD)); // ์ ์ ์ ๋ณด ๋์ด ํด์ฃผ๊ธฐ
/* ์์ฑํ ํ๊ฒฝ ์ค์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ๋ง์ด๋ฐํฐ์ค ์ค์ ๊ฐ์ฒด ์์ฑ */
Configuration configuration = new Configuration(environment);
// environment๋ฅผ ์ ๋ฌํ๋ฉด์ ์ค์ ๊ฐ์ฒด ์์ฑ
/* ์ค์ ๊ฐ์ฒด์ ๋งคํผ ๋ฑ๋ก */
configuration.addMapper(Mapper.class);
/* ์ฐ๊ฒฐ ๋ฐฉ๋ฒ 1 */
/* SqlSessionFactory : sqlSession ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํ ํฉํ ๋ฆฌ ์ญํ ์ ์ํํ๋ ์ธํฐํ์ด์ค
* SqlSessionFactoryBuilder : SqlSessionFactory ์ธํฐํ์ด์ค ํ์
์ ํ์ ๊ตฌํ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํ ๋น๋ ์ญํ ์ํ
* build() : ์ค์ ์ ๋ํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ Configuration ํ์
์ ๊ฐ์ฒด ํน์ ์ธ๋ถ ์ค์ ํ์ผ๊ณผ ์ฐ๊ฒฐ๋ ์คํธ๋ฆผ์
* ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌํ๋ฉด SqlSessionFactory ์ธํฐํ์ด์ค ํ์
์ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ ๋ฉ์๋ */
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration); // configuration๋ฅผ ์ ๋ฌํ๋ฉด์ ์ค์ ๊ฐ์ฒด ์์ฑ
/* openSession() : sqlSession ์ธํฐํ์ด์ค ํ์
์ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ ๋ฉ์๋, boolean ํ์
์ ์ธ์๋ก ์ ๋ฌ
* false : Connection ์ธํฐํ์ด์ค ํ์
๊ฐ์ฒด๋ก DML ์ํ ํ auto commit์ ๋ํ ์ต์
์ false๋ก ์ง์ (๊ถ์ฅ)
* true : Connection ์ธํฐํ์ด์ค ํ์
๊ฐ์ฒด๋ก DML ์ํ ํ auto commit์ ๋ํ ์ต์
์ true๋ก ์ง์
* */
SqlSession sqlSession = sqlSessionFactory.openSession(false);
/* getMapper() : Configuration์ ๋ฑ๋ก๋ ๋งคํผ๋ฅผ ๋์ผ ํ์
์ ๋ํด ๋ฐํํ๋ ๋ฉ์๋ */
Mapper mapper = sqlSession.getMapper(Mapper.class);
/* Mapper ์ธํฐํ์ด์ค์ ์์ฑ ๋ ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ์ฟผ๋ฆฌ ์คํ */
java.util.Date date = mapper.selectSysdate();
System.out.println(date);
/* close() : SqlSession ๊ฐ์ฒด ๋ฐ๋ฉ */
sqlSession.close();
}
}
๐ Ref.
* DB์ ์์ ๊ดํ ํ๊ฒฝ ์ค์
- JdbcTransactionFactory() : ์๋ ์ปค๋ฐ
- ManagedTransactionFactory() : ์๋ ์ปค๋ฐ
- PooledDataSource : Connection Pool ์ฌ์ฉ (๋ณดํต ๋ง์ด ์ฌ์ฉ๋๋ ์ต์
)
- UnPooledDataSource : Connection Pool ๋ฏธ์ฌ์ฉ
public interface Mapper {
@Select("SELECT SYSDATE FROM DUAL")
java.util.Date selectSysdate(); // Select๋ ํ์
์ Date๋ก ๋ฐ์์ด
}