[Spring] MyBatis vs JDBCTemplate

DANI·2023년 12월 26일

[Class] Spring-basic

목록 보기
4/8
post-thumbnail

1. 객체 관계 매핑 (ORM) vs 수동 매핑

MyBatis

: 자동 매핑 기능을 제공하여 결과 집합을 자동으로 자바 객체로 매핑할 수 있습니다. 개발자는 매핑 규칙을 세부적으로 조정할 수 있습니다.

JDBC Template

: 순수한 JDBC 기술을 사용하며, 객체와 데이터베이스 간의 매핑을 개발자가 직접 결과 집합을 자바 객체로 매핑해야 합니다. ResultSet을 반복하면서 필드를 수동으로 설정해야 합니다.


2. SQL 작성 방식

MyBatis

: XML 또는 어노테이션을 통해 SQL 문장을 정의하고, 이를 매퍼 인터페이스에서 호출합니다. 프레임워크가 객체와 데이터베이스 레코드 간의 매핑을 수행합니다.

JDBC Template

: SQL 쿼리는 문자열로 작성되며, 개발자는 직접 SQL 문을 작성하고 파라미터를 설정해야 합니다.


3. 자동 생성된 키 관리

MyBatis

: 자동 생성된 키를 처리하는 기능이 내장되어 있습니다. 데이터베이스에서 생성된 키를 MyBatis가 자동으로 객체에 설정해줄 수 있습니다.

JDBC Template

: 키 생성 및 관리는 개발자가 직접 처리해야 합니다.


4. 캐시 관리

MyBatis

: 내장된 캐시 매커니즘을 사용하여 쿼리 결과를 캐시할 수 있습니다.

JDBC Template

: 일반적으로 캐시 관리가 자동으로 제공되지 않습니다.


5. 복잡한 쿼리 및 프로시저 호출

MyBatis

: 복잡한 쿼리 및 프로시저 호출을 지원하며, 동적 SQL 작성이 용이합니다. <if>, <choose>, <when> 등의 XML 태그를 사용하여 동적인 쿼리를 작성할 수 있습니다.

JDBC Template

: 복잡한 쿼리 또는 프로시저 호출을 위해서는 개발자가 직접 JDBC를 사용하여 작성해야 합니다. 동적인 SQL 쿼리를 작성하기 어렵습니다. 복잡한 동적 쿼리를 처리하려면 문자열 조합 등의 방법을 사용해야 합니다.


6. ORM 기능

MyBatis

: 객체와 데이터베이스 간의 ORM을 제공하지 않습니다. 대신에 개발자가 직접 매핑을 정의해야 합니다.

JDBC Template

: 순수한 JDBC 기술이므로 객체와 데이터베이스 간의 ORM을 제공하지 않습니다.


0개의 댓글