SQL 실행 결과를 자바 빈즈 또는 Map 객체에 매핑해주는 Persistence 솔루션입니다.
SQL을 소스 코드가 아닌 XML로 분리하고, 데이터소스와 트랜잭션 처리 기능도 제공합니다.
SQL문과 프로그래밍 코드를 분리하여 구현합니다.
<insert id="registerFile" parameterType="boardDto">
insert into file_info (article_no, save_folder, original_file, save_file)
values
<foreach collection="fileInfos" item="fileinfo" separator=",">
(#{articleNo}, #{fileinfo.saveFolder}, #{fileinfo.originalFile}, #{fileinfo.saveFile})
</foreach>
</insert>
<sql id="search">
<if test="word != null and word != ''">
<if test="key == 'subject'">
and subject like concat('%', #{word}, '%')
</if>
<if test="key != 'subject'">
and ${key} = #{word}
</if>
</if>
</sql>
📌 반복문과 조건문을 사용하여 SQL 쿼리를 동적으로 관리할 수 있습니다.
Java ORM 기술에 대한 API 표준 명세입니다.
ORM(Object-Relational Mapping): 클래스와 RDB 테이블을 매핑하는 기술로,
Java 개발자가 객체지향 관점에서 더 쉽게 DB 연동을 할 수 있도록 도와줍니다.
객체와 데이터베이스 간의 불일치를 해소해 주는 기술입니다.
// Repository에 추가
List<Member> findByName(String name); // SELECT * FROM member WHERE name = ?
List<Member> findByAgeGreaterThan(int age); // age > ?
List<Member> findByNameContaining(String name); // name LIKE %name%
// 정렬
List<Member> members = memberRepository.findAll(Sort.by("age").descending());
// 페이징
Page<Member> page = memberRepository.findAll(PageRequest.of(0, 10));
List<Member> memberList = page.getContent();
✍️ 메서드 이름만 잘 짓는다면 SQL을 직접 작성하지 않아도 자동으로 처리됩니다.
🔸 MyBatis: 복잡한 쿼리와 SQL 제어가 필요한 경우
🔸 JPA: 간단한 매핑, 객체지향적인 접근, DB 마이그레이션이 필요한 경우
⚖️ 혼용도 가능하므로, 프로젝트 성격과 상황에 따라 유연하게 선택하는 것이 중요합니다.