MyBatis

์ฝœ๋ผ๋ง˜ยท2023๋…„ 7์›” 6์ผ
0

Spring

๋ชฉ๋ก ๋ณด๊ธฐ
8/14
post-thumbnail

๐Ÿ€ Mybatis

  • ์ฟผ๋ฆฌ๋ฌธ๋งŒ ์ ์œผ๋ฉด ์•Œ์•„์„œ DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด์˜ค๋Š” ํ”„๋ ˆ์ž„์›Œํฌ
  • ๊ฑฐ์˜ ๋ชจ๋“  jdbc๊ด€๋ จ ์ฝ”๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด์ค€๋‹ค
  • ๊ฐœ๋ฐœ์ž๋Š” ์‚ฌ์šฉํ•  ์ฟผ๋ฆฌ๋ฌธ๊ณผ ์ข…๋ฅ˜๋งŒ ์„ ํƒํ•˜๋ฉด ๋œ๋‹ค

๐ŸŒผ ํ•„์š”ํ•œ ์˜์กด์„ฑ๋“ค

  • mybatis
  • mybatis-spring
  • spring-jdbc

๐ŸŒผ ์˜์กด์„ฑ ์ฃผ์ž…ํ•˜๊ธฐ

  • ์œ„ ๋งํฌ์—์„œ Maven์„ ๋ณต์‚ฌํ•˜์—ฌ pom.xml์— ๋ถ™์—ฌ ๋„ฃ๊ธฐ

๐ŸŒผ ์ ์šฉ ์ˆœ์„œ

  1. DBCP๋กœ DataSource ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค (HikariDataSource)
  2. ์ƒ์„ฑํ•œ DataSource ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•ด SqlSessionFactoryBean ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค
    (์ปจํ…์ŠคํŠธ ์ƒ์— ์ƒ์„ฑํ•œ sqlSessionFactory๊ฐ€ ์žˆ์œผ๋ฉด mybatis๊ฐ€ ์•Œ์•„์„œ ํ•„์š”ํ•  ๋•Œ ๊ฐ€์ ธ๋‹ค ์‚ฌ์šฉํ•œ๋‹ค)
	<bean id="hikariDataSource" class="com.zaxxer.hikari.HikariDataSource">
		<constructor-arg ref="hikariConfig"></constructor-arg>
	</bean>
  1. root-context์˜ Namespace์—์„œ mybatis ์ฒดํฌ(์—ฌ๊ธฐ์„œ ์ฒดํฌํ•˜๋ฉด ์ž„ํฌํŠธํ•˜๋Š”๊ฒƒ๊ณผ ๊ฐ™์€ ํšจ๊ณผ๊ฐ€ ์žˆ๋‹ค, ์ง์ ‘ ์ž„ํฌํŠธํ•ด๋„๋˜๊ณ  ์—ฌ๊ธฐ์„œ ์ฒดํฌํ•ด๋„๋จ)

  2. mybatis-spring:scan ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ํŒจํ‚ค์ง€์˜ ์œ„์น˜๋ฅผ ์ง€์ •ํ•œ๋‹ค

	<mybatis-spring:scan base-package="com.ezen.springdatabase.mapper"/>

๐Ÿ€ Mapper

  • Mybatis์— Mapper ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋“ฑ๋กํ•˜๋ฉด ํ•ด๋‹น Mapper์˜ ์ •๋ณด๋ฅผ ํ†ตํ•ด ์ž๋™์œผ๋กœ ๋ฉ”์„œ๋“œ๋ฅผ ์ƒ์„ฑํ•ด์ค€๋‹ค (๋‚ด๊ฐ€ ์„ค์ •ํ•ด์•ผํ•˜๋Š” ๊ฒƒ : ๋ฆฌํ„ด ํƒ€์ž…, ์ฟผ๋ฆฌ๋ฌธ, ์ฟผ๋ฆฌ๋ฌธ ํƒ€์ž…)
  • ์–ด๋…ธํ…Œ์ด์…˜ ๋ฐฉ์‹์˜ Mapper์™€ XML๋ฐฉ์‹์˜ Mapper๊ฐ€ ์žˆ๋‹ค

๐ŸŒผ ์–ด๋…ธํ…Œ์ด์…˜ ๋ฐฉ์‹ Mapper

๐ŸŒฑ ์–ด๋…ธํ…Œ์ด์…˜ ์ข…๋ฅ˜

  • @Select(query)
  • @Insert(query)
  • @Delete(query)
  • @Update(query)

๐ŸŒฑ ์‚ฌ์šฉ๋ฐฉ๋ฒ•

  • @Select๋กœ ์กฐํšŒํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ ํ–‰์ธ๊ฒฝ์šฐ List ํƒ€์ž…์œผ๋กœ ๋ฆฌํ„ดํ•ด์ค€๋‹ค
  • @Select๋กœ ์กฐํšŒํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ํ•œ ํ–‰์ธ ๊ฒฝ์šฐ ํ•ด๋‹น DTO ํƒ€์ž…์œผ๋กœ ๋ฆฌํ„ดํ•ด์ค€๋‹ค
  • ์ฟผ๋ฆฌ๋ฌธ์— ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ #{name}๋กœ ์‚ฌ์šฉํ•˜๊ณ  @Param("name")์œผ๋กœ ์ง€์ •ํ•ด์ค€๋‹ค
  • @Insert, @Update, @Delete๋Š” ์—…๋ฐ์ดํŠธ ๋œ ํ–‰์„ ๋ฆฌํ„ดํ•˜๋ฏ€๋กœ ์ •์ˆ˜ ํƒ€์ž…์œผ๋กœ ๋ฆฌํ„ดํ•ด์ค€๋‹ค
  • @Insert, @Update์‹œ์— ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ž๋ฐ”๋นˆ ๋ฐ์ดํ„ฐ ํด๋ž˜์Šค ํ˜•์‹(DTO)์œผ๋กœ ๋„˜๊ธฐ๋ฉด ํŒŒ๋ผ๋ฏธํ„ฐ์— #{property}๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

๐Ÿ€ XML ๋ฐฉ์‹ Mapper

๐ŸŒผ ์‚ฌ์šฉ๋ฐฉ๋ฒ•

  1. Mapper Interface๋ฅผ ์ƒ์„ฑํ•œ๋‹ค(๋ฉ”์„œ๋“œ๋งŒ ์ •์˜ํ•˜๊ณ  ์–ด๋…ธํ…Œ์ด์…˜์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค)
  2. resources ๋ฐ‘์— ํ•ด๋‹น Mapper๊ฐ€ ์†ํ•œ ํŒจํ‚ค์ง€์˜ ๊ฒฝ๋กœ๋Œ€๋กœ ํด๋”๋ฅผ ์ƒ์„ฑํ•œ๋‹ค(ํด๋”๋ฅผ ํ•˜๋‚˜์”ฉ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค)
  3. ํ•ด๋‹น ํด๋”์— ๊ฐ™์€ ์ด๋ฆ„์˜ Mapper.xml์„ ์ƒ์„ฑํ•œ๋‹ค
  4. xml์˜ ํ˜•์‹์€ mybatis์˜ ๊ณต์‹ ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•œ๋‹ค

๐Ÿš€ mybatis_๊ณต์‹ํŽ˜์ด์ง€ ๋ฐ”๋กœ๊ฐ€๊ธฐ

profile
์ฝœ๋ผ๋ง˜ ์ฝ”๋”ฉ์ผ๊ธฐ

0๊ฐœ์˜ ๋Œ“๊ธ€