ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JSP] MyBatis 적용_2(어노테이션 없이)
    JAVA/ORM 2024. 7. 30. 18:56

    ▤ 목차

       
       
      https://hi-hahahoho.tistory.com/93

      저번 글에서는 configuration.xml과 sqlMapConfig.java 설정을 자세히 봤다.
      이번에는 DataMapper.xml과 DAO간 어떻게 사용되는지 정리하겠다.
      jsp와 같은 앞단은 특별히 달라지는 것은 없다.
       

      ✔ DataDao

      ⌨ SqlSession

      MyBatis에서 데이터베이스와 실제 세션(sql 쿼리 실행을 준비)을 나타내는 객체이다.
      SQL 실행 및 트랜잭션 관리를 담당한다.
      openSession() 메서드를 호출하여 기본 세션을 열고 작업이 끝나면 해당 객체를 해제한다.
       

      🔦 MyBatis는 List 자료구조를 반환한다.

       

       
      여러 행을 조회할때, 해당 테이블의 모든 행을 조회하고 각 행을 객체로 매핑해서 List로 반환한다.
       
       
       

      🖇️Mapper 메서드 호출

       
       
      session.selectList("selectAll")
      session.selectOne("selectOne", code)
      session.insert("insertData", form)
      ...
      Mapper XML에서 정의된 쿼리를 호출하여 데이터베이스 작업을 수행한다.
       

      👏 조회하는 객체에 따라

      조회하는 객체가 2개 이상이라면 selectList메서드를 사용해야하며, 1개의 객체를 조회한다면 selectOne()메서드를 사용해야한다.
       
       
       


       
       
       

      ✔ Mapper XML 파일 (DataMapper.xml)

      ⌨ Mapper

      namespace 속성을 사용해서 Mapper 인터페이스를 정의한다.
      SQL 쿼리를 정의해야한다..
      select, insert.. 등 sql 문장과 매개변수 parameterType과 resultType을 명시해줘야한다.
      이때 각 매핑되는 xml과 dao의 타입을 잘 맞춰줘야한다.
       
       
       

      ❓XML에서 # 기호

      이 기호는 주로 MyBatis에서 SQL 쿼리 매개변수(parameter)를 지정할 때 사용한다. MyBatis는 SQL 매퍼 xml파일에서 SQL 쿼리를 정의할때 ' #{ .. }'을 사용하여 동적으로 값이 들어갈 부분을 표시한다.
       
      1.동적 SQL 매개변수 지정이 가능하다.
      MyBatis에서 SQL 쿼리 내에 #{ .. } 기호를 사용하여 SQL 매개변수를 지정한다.
      MyBatis에서 자동으로 해당 매개 변수의 값을 sql 쿼리에 적절하게 매핑한다.
       
      2. SQL Injection 방지 가능.
      #{ .. } 기호를 사용하면 MyBatis가 쿼리 실행 시 자동으로 매개변수 값을 안전하게 처리하여 sql injection 공격을 방지한다.
      jsp에서 PreparedStatement (pstmt)의 ? 기능과 비슷한 역할을 한다 (물론 사용하는 목적엔 차이가 약간 있다.)
       
      3. 자동 타입 변환
      #{ .. } 기호를 사용하면 MyBatis는 매개변수의 자료형에 따라 자동으로 적절한 sql 매개변수 값을 생성한다.
      (쉽게 말하자면) 문자열이 들어오면 알아서 따옴표 처리를 한다는 의미!
       
       


       
       

      😊정리

      jsp file

       
      jsp 파일에서 이와같이 dao에 접근하여 사용할 수 있다.
       
       

      • MyBatis의 활용
        코드에서 MyBatis를 사용하여 데이터베이스와의 연동을 구현해봤다.
        MyBatis는 SQL 매퍼 XML을 사용하여 SQL 쿼리를 정의하고 자바 코드에서 실행하는 방식이다.
        위와 같은 방식으로 데이터 접근 계층을 구성할 수 있다.
      • SqlMapConfig 클래스에서 SqlSessionFactory를 생성하고 설정한다.
        이 클래스는 싱글톤 패턴을 사용하여 애플리케이션 전체에서 하나의 SqlSessionFactory 인스턴스를 관리하고 있다.
      • DAO 클래스
        데이터 접근 객체 패턴을 사용했다.
        데이터베이스와 직접적인 접근을 캡슐화(묶어)하여 비즈니스 로직과 데이터 접근을 분리하여 유지보수를 높였다. 
    Designed by Tistory.