Spring/Mybatis | Mybatis SqlSession
ํด๋น ๋ด์ฉ์ ๊ณต๋ถ์ ๋ชฉ์ ์ผ๋ก ๊ธฐ๋ก๋์์ผ๋ฉฐ,
์๋ ๋ด์ฉ์ ๋ชจ๋ ๊ตฌ๊ธ ๊ฒ์์ผ๋ก ๊ณต๋ถ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์์ฑํ์ต๋๋ค.
์ด์ฌํ ๋ฐฐ์ฐ๋ ์ค์ ๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
๐ SqlSessionFactoryBean / SqlSessionTemplate
SqlSessionFactory: SqlSession์ ์์ฑํด์ ์ ๊ณต
SqlSession: SQL๋ช ๋ น์ ์ํํ๋๋ฐ ํ์ํ ๋ฉ์๋ ์ ๊ณต
SqlSessionFactoryBean: SqlSessionFactory๋ฅผ Spring์์ ์ฌ์ฉํ๊ธฐ ์ํ ๋น
SqlSessionTemplate: SQL๋ช ๋ น์ ์ํํ๋๋ฐ ํ์ํ ๋ฉ์๋ ์ ๊ณต thread-safe
Thread Safe๋?
์ค๋ ๋ ์์ (Thread Safety)์ ๋ฉํฐ ์ค๋ ๋ ํ๋ก๊ทธ๋๋ฐ์์ ์ผ๋ฐ์ ์ผ๋ก ์ด๋ค ํจ์๋ ๋ณ์, ํน์ ๊ฐ์ฒด๊ฐ ์ฌ๋ฌ ์ค๋ ๋๋ก๋ถํฐ ๋์์ ์ ๊ทผ์ด ์ด๋ฃจ์ด์ ธ๋ ํ๋ก๊ทธ๋จ์ ์คํ์ ๋ฌธ์ ๊ฐ ์์์ ๋ปํ๋ค.
๋ณด๋ค ์๋ฐํ๊ฒ๋ ํ๋์ ํจ์๊ฐ ํ ์ค๋ ๋๋ก๋ถํฐ ํธ์ถ๋์ด ์คํ ์ค์ผ ๋, ๋ค๋ฅธ ์ค๋ ๋๊ฐ ๊ทธ ํจ์๋ฅผ ํธ์ถํ์ฌ ๋์์ ํจ๊ป ์คํ๋๋๋ผ๋ ๊ฐ ์ค๋ ๋์์์ ํจ์์ ์ํ ๊ฒฐ๊ณผ๊ฐ ์ฌ๋ฐ๋ก ๋์ค๋ ๊ฒ์ผ๋ก ์ ์ํ๋ค.

์ถ์ฒ | ๊ณฐํก์ด ๋จผ์ง์ฐ๊ตฌ์
๐ SqlSessionFactoryBean๊ณผ SqlSessionTemplate ์ฌ์ฉ ์ค๋น
- https://mvnrepository.com/ ์์ mybatis๋ฅผ ๊ฒ์ํ์ฌ ๋ฒ์ ์ ํ์ธํ๊ณ dependency๋ฅผ pom.xml์ ๋ณต์ฌ/๋ถ์ฌ๋ฃ๊ธฐ ํ๋ฉด ๋๋ค.
- Spring์์ ์ฌ์ฉํ๊ธฐ ์ํด mybatis์ mybatis-spring ๋ฅผ ์ ์ฉํ๋ค.
<!-- pom.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.7</version>
</dependency>
๐ SqlSessionFactoryBean๊ณผ SqlSessionTemplate ๊ตฌ์ฑ
<!-- root-context.xml -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<!--<property name="mapperLocations" value="classpath:mapper/*Mapper.xml"/>-->
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg ref="sqlSessionFactory"/>
</bean>
๐ SqlSession์ ์ฃผ์ ๋ฉ์๋
๋ฉ์๋ | ์ค๋ช |
int insert(String statement) int insert(String statement, Object parameter) |
insert๋ฌธ์ ์คํํ๊ณ , insert๋ ํ์ ๊ฐฏ์๋ฅผ ๋ฐํ |
int delete(String statement) int delete(String statement, Object parameter) |
delete๋ฌธ์ ์คํํ๊ณ , delete๋ ํ์ ๊ฐฏ์๋ฅผ ๋ฐํ |
int update(String statement) int update(String statement, Object parameter) |
update๋ฌธ์ ์คํํ๊ณ , update๋ ํ์ ๊ฐฏ์๋ฅผ ๋ฐํ |
T selectOne(String statement) T selectOne(String statement, Object parameter) |
ํ๋์ ํ์ ๋ฐํํ๋ select์ ์ฌ์ฉ parameter๋ก SQL์ binding๋ ๊ฐ ์ ๊ณต |
List<E> selectList(String statement) List<E> selectList(String statement, Object parameter) |
์ฌ๋ฌ ํ์ ๋ฐํํ๋ select์ ์ฌ์ฉ parameter๋ก SQL์ binding๋ ๊ฐ ์ ๊ณต |
Map<K, V> selectMap(String statement, String keyCol) Map<K, V> selectMap(String statement, String keyCol, Object parameter) |
์ฌ๋ฌ ํ์ ๋ฐํํ๋ select์ ์ฌ์ฉ keyCol์ map์ key๋ก ์ฌ์ฉํ ์ปฌ๋ผ ์ง์ |
๐ Mapper XML์ ์์ฑ
์ฌ์ง ์ถ์ฒ | ๋ฌธ์ฝ๋ฉ
[Spring] 2์ฅ Mapper XML ํ์ผ ์ค์ - Mybatis ๊ตฌ์กฐ์ Mapper XML ํ์ผ ๊ตฌ์กฐ ๋ฐ ์๋ฆฌ๋จผํธ(select, insert, update, del
์ค์ต ์ฝ๋ ์ฐธ์กฐ moonhy7/SpringFramework: Spring Framework ์ค์ต ์ฝ๋ ์ ๋ฆฌ (github.com) GitHub - moonhy7/SpringFramework: Spring Framework ์ค์ต ์ฝ๋ ์ ๋ฆฌ Spring Framework ์ค์ต ์ฝ๋ ์ ๋ฆฌ. Contribute to moonhy7/SpringFramework developmen
moonhy7.tistory.com
์ถ์ฒ | ํจ์คํธ์บ ํผ์ค ์คํ๋ง์ ์ ์
ํจ์คํธ์บ ํผ์ค [์ง์ฅ์ธ ์ค๋ฌด๊ต์ก]
ํ๋ก๊ทธ๋๋ฐ, ์์ํธ์ง, UX/UI, ๋ง์ผํ , ๋ฐ์ดํฐ ๋ถ์, ์์ ๊ฐ์, The RED, ๊ตญ๋น์ง์, ๊ธฐ์ ๊ต์ก, ์๋น์ค ์ ๊ณต.
fastcampus.co.kr