상세 컨텐츠

본문 제목

스프링과 MyBatis

Spring(프레임워크)

by 헬로제이콥 2025. 1. 16. 15:52

본문

스프링과 MyBatis: 초보자를 위한 더 쉬운 설명과 자세한 주석

왜 스프링과 MyBatis를 함께 사용할까요?

  • 스프링: 자바 개발을 편리하게 해주는 종합적인 프레임워크입니다. 여러 기능들을 통합하고 관리해주어 개발자가 코딩에 집중할 수 있도록 도와줍니다.
  • MyBatis: 데이터베이스와 자바 객체 사이를 매핑하여 SQL 쿼리를 더 쉽게 작성하고 관리할 수 있도록 해주는 프레임워크입니다.

스프링과 MyBatis를 함께 사용하면 데이터베이스와의 연결, SQL 쿼리 실행, 결과 처리 등을 더욱 효율적으로 관리할 수 있습니다.

간단한 예제: 사용자 정보 조회하기

Java
 
// UserMapper.java
public interface UserMapper {
    // 사용자 정보를 조회하는 메서드
    // @Param 어노테이션을 사용하여 파라미터를 지정
    User selectUserById(@Param("userId") int userId);
}

// UserMapper.xml
<mapper namespace="com.example.UserMapper">
    <select id="selectUserById" resultType="com.example.User">
        SELECT * FROM users WHERE user_id = #{userId}
    </select>
</mapper>

// UserService.java
@Service
public class UserService {
    @Autowired
    private SqlSessionTemplate sqlSessionTemplate;

    public User getUserById(int userId) {
        // Mapper 인터페이스를 통해 SQL 실행
        return sqlSessionTemplate.getMapper(UserMapper.class).selectUserById(userId);
    }
}

코드 설명

  • UserMapper.java:
    • selectUserById 메서드: 사용자 ID를 받아 해당 사용자 정보를 조회하는 메서드입니다.
    • @Param 어노테이션: SQL에서 파라미터를 사용할 때 파라미터 이름을 지정합니다.
  • UserMapper.xml:
    • namespace: Mapper 인터페이스의 패키지 경로를 지정합니다.
    • select: SELECT 쿼리를 작성하고, resultType으로 결과를 매핑할 Java 객체를 지정합니다.
    • #{userId}: @Param으로 지정한 파라미터를 SQL에서 사용합니다.
  • UserService.java:
    • SqlSessionTemplate: MyBatis와 스프링을 연결해주는 템플릿입니다.
    • getUserById 메서드: SqlSessionTemplate을 이용하여 UserMapper 인터페이스의 메서드를 호출하고, 결과를 반환합니다.

더 쉽게 이해하기 위한 비유

  • UserMapper.java: 레스토랑 메뉴판과 같습니다. 어떤 음식을 주문할 수 있는지 정의되어 있습니다.
  • UserMapper.xml: 요리 레시피와 같습니다. 메뉴판에 있는 음식을 어떻게 만들지 자세한 방법이 적혀 있습니다.
  • UserService.java: 웨이터와 같습니다. 손님의 주문을 받아 주방(데이터베이스)에 전달하고, 요리된 음식(결과)을 손님에게 가져다줍니다.

주요 개념 정리

  • Mapper 인터페이스: SQL 쿼리를 메서드 형태로 정의합니다.
  • Mapper XML: 실제 SQL 쿼리를 작성하는 파일입니다.
  • SqlSessionTemplate: MyBatis와 스프링을 연결하고, SQL 실행을 담당합니다.

좀 더 복잡한 기능을 구현하려면?

  • Dynamic SQL: 조건에 따라 SQL 쿼리를 동적으로 생성할 수 있습니다.
  • ResultMap: 복잡한 결과를 Java 객체에 매핑할 수 있습니다.
  • Cache: 쿼리 결과를 캐시하여 성능을 향상시킬 수 있습니다



    마치 도서관에서 책 찾는 것과 같아요!1. UserMapper (사서 선생님):
    • UserMapper는 마치 도서관 사서 선생님과 같아요. 우리가 원하는 정보(사용자 정보)를 찾아주는 역할을 하죠.
    • selectUserById라는 메서드는 "사용자 ID를 가지고 사용자 정보를 찾아줘"라는 명령어예요. 마치 "이 책을 찾아주세요"라고 말하는 것과 같아요.
    2. UserMapper.xml (도서관 목록):
    • UserMapper.xml은 도서관의 책 목록과 같아요. 어떤 책이 어디에 있는지 정확하게 기록되어 있죠.
    • **SELECT * FROM users WHERE user_id = #{userId}**는 "users라는 책 목록에서 user_id가 #{userId}인 책을 찾아"라는 뜻이에요. 마치 "컴퓨터 과학 책을 찾아주세요"라고 말하는 것과 같아요.
    3. UserService (도서관 이용자):
    • UserService는 도서관을 이용하는 우리와 같아요.
    • getUserById라는 메서드는 "UserMapper에게 사용자 정보를 요청해"라는 명령어예요. 마치 "사서 선생님, 이 책 좀 찾아주세요"라고 말하는 것과 같아요.
    전체 과정 요약:
    1. **우리(UserService)**가 **사서 선생님(UserMapper)**에게 "사용자 정보를 찾아달라"고 부탁해요.
    2. **사서 선생님(UserMapper)**은 **도서관 목록(UserMapper.xml)**을 보고 정확한 책(사용자 정보)을 찾아 우리에게 가져다줘요.
    결론적으로:
  • 위 코드는 컴퓨터 프로그램이 마치 도서관처럼 작동하여 우리가 원하는 정보(사용자 정보)를 찾아주는 과정을 보여주는 거예요.
  • 우리가 도서관에서 특정 책을 찾고 싶을 때, 도서관 사서 선생님께 책 제목이나 작가 이름을 알려주면 그 책을 찾아다 주시죠? 컴퓨터 프로그램에서도 이와 비슷한 일이 일어나요.

'Spring(프레임워크)' 카테고리의 다른 글

API 구조 설계 수정 제안  (0) 2025.01.16
스프링 구조도 및 파일 설명  (0) 2025.01.16
DTO와 VO  (0) 2025.01.16
어노테이션? 레고 블록  (0) 2025.01.16
커넥션 풀이 뭐야? 레고 블록으로 알아보자  (0) 2025.01.16

관련글 더보기