๐ป ๊ณต๋ถ ๊ธฐ๋ก/๐ 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 ๊ณต์ ํ๊ธฐ URL ๋ณต์ฌ์นด์นด์คํก ๊ณต์ ํ์ด์ค๋ถ ๊ณต์ ์์ค ๊ณต์ ๊ฒ์๊ธ ๊ด๋ฆฌ ๊ตฌ๋ ํ๊ธฐMOVEMENT.DEV Contents ๐SqlSessionFactoryBean/SqlSessionTemplate ThreadSafe๋? ๐SqlSessionFactoryBean๊ณผSqlSessionTemplate์ฌ์ฉ์ค๋น ๐SqlSessionFactoryBean๊ณผSqlSessionTemplate๊ตฌ์ฑ ๐SqlSession์์ฃผ์๋ฉ์๋ ๐MapperXML์์์ฑ ๋น์ ์ด ์ข์ํ ๋งํ ์ฝํ ์ธ Spring | DI(Dependency Injection) 2023.06.14 Spring | Reflection์ ์ฌ์ฉํ์ฌ Annotation ๊ฐ์ ธ์ค๊ธฐ 2023.06.13 Spring | STOMP 2023.04.17 Spring | Model๊ณผ ModelAndView 2023.04.07 ๋๊ธ 0 + ์ด์ ๋๊ธ ๋๋ณด๊ธฐ