๐Ÿ“Œ Spring ํ™˜๊ฒฝ์—์„œ MyBatis ์„ค์ •๊ณผ Mapper ํ™œ์šฉ๋ฒ•

My Pale Blue Dotยท2025๋…„ 4์›” 25์ผ
0

SPRING

๋ชฉ๋ก ๋ณด๊ธฐ
12/36
post-thumbnail

๐Ÿ“… ๋‚ ์งœ

2025-04-25


๐Ÿ“ 1๏ธโƒฃ ๊ฐœ๋… ์ •๋ฆฌ

โœ… ์ปค๋„ฅ์…˜ ํ’€(Connection Pool) ๊ฐœ๋…

  • DB ์—ฐ๊ฒฐ์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ์ˆ .
  • ๋Œ€ํ‘œ์ ์ธ ์ปค๋„ฅ์…˜ ํ’€: DBCP2, HikariCP
ํ•ญ๋ชฉDBCP2HikariCP
์„ฑ๋Šฅ๋ณดํ†ต๋งค์šฐ ์šฐ์ˆ˜
์•ˆ์ •์„ฑ๊ฒ€์ฆ๋จ์ตœ์‹ , ์•ˆ์ •์ 
ํŠน์ง•์ „ํ†ต์ ๊ฒฝ๋Ÿ‰, ๋น ๋ฆ„

โœ… SQL Mapper vs ORM

๊ตฌ๋ถ„SQL Mapper (MyBatis)ORM (JPA)
๋ฐฉ์‹SQL ์ง์ ‘ ์ž‘์„ฑ๊ฐ์ฒด-ํ…Œ์ด๋ธ” ๋งคํ•‘
์ œ์–ด๊ฐœ๋ฐœ์ž ์ค‘์‹ฌํ”„๋ ˆ์ž„์›Œํฌ ์ค‘์‹ฌ
์ ํ•ฉํ•œ ๊ฒฝ์šฐ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋„๋ฉ”์ธ ์ค‘์‹ฌ ์„ค๊ณ„

โœ… Mapper๋ž€?

  • SQL๊ณผ ์ž๋ฐ” ๋ฉ”์„œ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ๋งคํ•‘ ์ธํ„ฐํŽ˜์ด์Šค.
  • MyBatis์—์„œ SQL ์‹คํ–‰์„ ๋‹ด๋‹น.

๐Ÿ“ 2๏ธโƒฃ ํ™˜๊ฒฝ ์„ค์ •

โœ… pom.xml ์„ค์ • (์ฃผ์š” ์˜์กด์„ฑ)

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>2.0.7</version>
</dependency>
<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>6.3.0</version>
</dependency>

โœ… DataSource ์„ค์ • (DataSourceConfig.java)

@Bean
public HikariDataSource dataSource3() {
    HikariDataSource dataSource = new HikariDataSource();
    dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
    dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/testdb");
    dataSource.setUsername("root");
    dataSource.setPassword("1234");
    return dataSource;
}

โœ… MyBatis ์„ค์ • ์ˆœ์„œ

  1. pom.xml - ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์ •
  2. root-context.xml - <mybatis-spring:scan> ์ถ”๊ฐ€
  3. Java Config - SqlSessionFactory ๋“ฑ๋ก
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
    SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
    sessionFactory.setDataSource(dataSource3);
    return sessionFactory.getObject();
}

๐Ÿ“ 3๏ธโƒฃ ํ…Œ์ŠคํŠธ ๋ฐ ๊ฒ€์ฆ

โœ… MyBatis ์—ฐ๋™ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ

@Test
void t1() {
    assertNotNull(sqlSessionFactory);
    SqlSession sqlSession = sqlSessionFactory.openSession();
    assertNotNull(sqlSession);
}

โœ”๏ธ ๊ธฐ๋Œ€ ๊ฒฐ๊ณผ: Bean ์ •์ƒ ์ฃผ์ž… ์‹œ ํ…Œ์ŠคํŠธ ํ†ต๊ณผ!

โŒ ๋ฌธ์ œ ๋ฐœ์ƒ ์‹œ: ์„ค์ • ์˜ค๋ฅ˜๋กœ ์ธํ•œ NullPointerException


โœ… assertNotNull ์ฒดํฌ ์ด์œ 

  • DI ์ฃผ์ž… ํ™•์ธ
  • ์„ค์ • ์˜ค๋ฅ˜ ์‚ฌ์ „ ํƒ์ง€
  • ๊ฐ์ฒด ์œ ํšจ์„ฑ ๊ฒ€์ฆ

โœ… Beans Graph ํ™•์ธ

  • ์Šคํ”„๋ง ๋นˆ ๋“ฑ๋ก ์ƒํƒœ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ํ™•์ธ.
  • sqlSessionFactory๊ฐ€ ๊ทธ๋ž˜ํ”„์— ํ‘œ์‹œ๋˜๋ฉด ์„ค์ • ์™„๋ฃŒ!

๐Ÿ”ฅ ์š”์•ฝ

  • Spring + MyBatis ์„ค์ • ํ๋ฆ„ ์™„๋ฒฝ ์ •๋ฆฌ
  • ์ปค๋„ฅ์…˜ ํ’€ ๋น„๊ต๋กœ ์„ฑ๋Šฅ ์ตœ์ ํ™” ํฌ์ธํŠธ ์ดํ•ด
  • Mapper ๊ฐœ๋…๊ณผ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋กœ ์‹ค์Šต ๊ฒ€์ฆ
  • ์„ค์ • ์˜ค๋ฅ˜๋ฅผ ์‚ฌ์ „์— ๋ฐฉ์ง€ํ•˜๋Š” ํŒ๊นŒ์ง€ ํ™•๋ณด!

๐Ÿ”— ์ฐธ๊ณ  ์ž๋ฃŒ


profile
Here, My Pale Blue.๐ŸŒ

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