220726

김용진·2022년 7월 26일
0

MyBatis(SQL Mapper)와 JPA(ORM)차이

JPA(ORM)

  • JPA : ORM(Object Relational Mapping) 기술
  • 자바 ORM의 기술 표준
  • 대표적인 오픈소스로 Hibernate
  • CRUD 메소드 기본 제공
  • 쿼리를 만들지 않아도 됨
  • 1차 캐싱, 쓰기지연, 변경감지, 지연로딩 제공
  • MyBatis는 쿼리가 수정되어 데이터 정보가 바뀌면 그에 사용 되고 있던 DTO와 함께 수정해주어야 하는 반면에, JPA 는 객체만 바꾸면 된다.
  • 즉, 객체 중심으로 개발 가능
    but 복잡한 쿼리는 해결이 어려움

MyBatis(SQL Mapper)

  • MyBatis : Object Mapping 기술
  • 자바에서 SQL Mapper를 지원해주는 프레임워크
  • SQL문을 이용해서 RDB에 접근, 데이터를 객체화 시켜줌
  • SQL을 직접 작성하여 쿼리 수행 결과를 객체와 매핑
  • 쿼리문을 xml로 분리 가능
  • 복잡한 쿼리문 작성 가능
  • 데이터 캐싱 기능으로 성능 향상
  • but 객체와 쿼리문 모두 관리해야함, CRUD 메소드를 직접 다 구현해야함.

MyBatis에서 <sql>, <include> 사용법

참고 https://kimvampa.tistory.com/176

  • <sql> 태그는 다른 구문에서 재사용가능한 sql 구문을 정의 할 때 사용

  • <include> 같은 파일 내에 정의해둔 <sql> 불러올때 사용

  • ex) where 부분 공통사용

    <sql id="where">
	
		where bno = #{bno}
	
	</sql>
	
	<select id="getPage" resultType="int">
	
		select pageNum from vam_board <include refid="where"></include>
	
	</select>
    
    	<select id="getTitle" resultType="String">
	
		select title from vam_board <include refid="where"></include>
	
	</select>
    
    	<select id="getContent" resultType="String">
	
		select content from vam_board <include refid="where"></include>
	
	</select>

IFNULL

  • 함수 사용법 : IFNULL(expr1,expr2)
  • 첫번째 매개값이 null이면 두번째 매개값을 반환한다.
    만약, null이 아니면 그냥 첫번째 매개값을 그대로 반환한다.
  • ex
IFNULL((SELECT count
        FROM ${DB_NEOS}.t_co_comment_count t_inner
        WHERE t_inner.module_gbn_code = 'board'
        AND t_inner.module_seq = t_mast.art_seq_no
        ),0) as comment_cnt

//comment_cnt(댓글갯수) 등록된 댓글(select~)이 null값이면 0으로 반환

intellij

컨트롤+쉬프트+F = 파일 내에서 검색
쉬프트+쉬프트 = 각종 검색(파일 검색)

profile
개발 블로그

0개의 댓글