Mybatis와 SQL Session이 하는 일

<update id="updatePasswordData" parameterType="Map">
		UPDATE users SET password = #{password} where phone = #{phone}
	</update>

위 코드는 비밀번호 재설정을 위해 Service에서 호출하는 Update query문이고, 이해하려면 알아야 하는 내용들을 아래에 적어보려고 한다!

<먼저 이해를 위한 간단한 용어 정리>

  • Spring : 개발을 더 쉽게 해주는 프로그램 틀
  • Framework : 자주 쓰는 기능들을 모아 놓은 Util(클래스)의 집합
    개발에 도움이 되는 라이브러리와 설계도 틀을 제공
    https://jerryjerryjerry.tistory.com/62

1. Mybatis (마이바티스)

1) Mybatis는 코드를 간결하게 줄여주는 일을 한다.
기존의 boilerplate 코드와 Sql문으로 복잡해진 코드를 줄이고,
유지보수를 간편하게 한다.
https://dadmi97.tistory.com/66?category=828767 > (참고링크)
https://coding-grandpa.tistory.com/2 > 보일러 플레이트란?
<코드 작성 시 항상 필요한 부분--!>

2) 자바의 지속성프레임워크(Persistence Framework) 중 하나로,
xml 파일 안에서 SQL문을 사용하여 객체들을 연결시키는 일을 한다.
메모리의 휘발성을 개선하여 데이터가 날라가지 않게 하는 것 = 영속성, Persistence
데이터베이스와 연동되는 시스템을 빠르게 개발하고 안정적인 구동을 보장하는 프레임워크!
https://ko.wikipedia.org/wiki/%EB%A7%88%EC%9D%B4%EB%B0%94%ED%8B%B0%EC%8A%A4

2. SQL Session

1) Mybatis에서 SqlSessionFactory를 사용하여 SqlSession 객체를 생성한다.

2) SqlSessionFactory는 SqlSessionFactoryBuilder를 사용해서 생성한다.
(마이바티스 스프링 연동모듈에서는, SqlSessionFactoryBean가 대신 사용된다.)
https://mybatis.org/spring/ko/factorybean.html

: 말이 너무 어지러운데,, 일단 SqlSession 객체를 생성하기 위해
Factory 또는 FactoryBean을 xml 환경설정파일에 넣어 쓴다는 것 같다!
https://dadmi97.tistory.com/66?category=828767

3) 그리고 SQLSession은 SQL문을 실행하고 Transaction을 관리하는데 사용된다.

3. CRUD Query문

1) SQL Query문은 데이터베이스와 연동하는 프로그램을 구현할 때 쓰게 된다.
https://lcs1245.tistory.com/entry/%EA%B8%B0%EB%B3%B8-SQL-Query%EB%AC%B8-%EC%A0%95%EB%A6%AC-SELECT-INSERT-UPDATE-DELETE

2) INSERT / 데이터 삽입

INSERT INTO 테이블명 (컬럼명1, 컬럼명2, 컬럼명3) VALUES (값1, 값2, 값3)

컬럼과 값이 한 쌍이 되는 구조이고,
문자열을 값으로 입력한다면 작은따옴표 '문자열' 로 문자열을 감싸주어야 한다!

3) SELECT / 데이터 조회

SELECT 컬럼명 FROM 테이블명 WHERE 조건 ORDER BY 컬럼명 ASC or DESC LIMIT 개수

순서대로 읽으면 된다!

테이블의 컬럼명에 들어 있는 데이터를 불러오며
WHERE부터는 옵션이다. 써도 되고, 쓰지 않아도 된다!
->WHERE절 뒤에 조건이 참인 데이터만 불러오고
->ORDER BY 뒤에 오는 컬럼명을 기준으로 ASC는 오름차순, DESC는 내림차순 정렬
->LIMIT절의 개수만큼 데이터를 제한하여 불러온다.

4) UPDATE / 데이터 수정

UPDATE 테이블명 SET 컬럼명 1 = 변경할 값 1 WHERE 조건

5) DELETE / 데이터 삭제

DELETE FROM 테이블명 WHERE 조건

4. Mybatis의 placeholder

<update id="updatePasswordData" parameterType="Map">
    UPDATE users SET password = #{password} WHERE phone = #{phone}
</update>

위에 썼던 코드를 다시 끌고오면,
password = #{password} 라고 #{ } 이 부분이 궁금했었다.

chatgpt는 아래와 같이 해석해주고 있다.

#{password}는 MyBatis의 플레이스홀더로, Map의 키로 전달된 값으로 대체됩니다. 또한, WHERE 절이 추가되어 특정 사용자의 비밀번호만 업데이트되도록 합니다. 이때, phone은 사용자를 고유하게 식별할 수 있는 어떤 값이어야 합니다.

해석하자면 파라미터의 값으로 대체하여 업데이트한다는 뜻인 것 같다!

👋끝!!

0개의 댓글

Powered by GraphCDN, the GraphQL CDN