๐Ÿ’ป ๊ณต๋ถ€ ๊ธฐ๋ก/๐Ÿƒ Spring

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

 

Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.