1. Dapper란 무엇인가
Dapper는 .NET 마이크로ORM(Micro ORM)으로, Micro ORM의 왕으로 불리며 네이티브 ADO.NET에 가까운 성능을 보입니다.
ORM:객체 관계 매퍼. 데이터베이스 테이블 ↔ C# 엔티티 객체 간 자동 매핑을 구현합니다.
주요 특징:
- SQL을 캡슐화하지 않고 개발자가 직접 SQL을 작성합니다;
- 확장 메서드로
IDbConnection을 확장합니다(모든 데이터베이스 연결 객체에서 바로 사용 가능); - 가볍고 성능이 매우 뛰어납니다.
참고:엄밀히 말하면 마이크로ORM으로 EF Core 같은 완전한 ORM 프레임워크와 차이가 있습니다. 커뮤니티에서 ‘순수한 ORM인가’에 대한 논의가 이어지고 있습니다.
SQL 인젝션 방어:매개변수화 쿼리를 사용하면 인젝션을 피할 수 있습니다. SQL 문자열 연결은 여전히 위험이 존재합니다.
실행 3단계:데이터베이스 연결 생성 → SQL 구문 작성 → Dapper 확장 메서드를 호출해 SQL과 매개변수를 전달하여 실행.
특징
- 고성능, 빠른 쿼리 속도
- 정적 엔티티, 동적 객체 매핑 지원
- SQL 구문을 자유롭게 제어 가능
- 다중 결과 집합 쿼리 지원
- 저장 프로시저 네이티브 지원
IDbConnection인터페이스 기반, 각종 데이터베이스 드라이버와 호환- 대량 삽입 지원(확장 기능. 기본은 간단한 대량 삽입, 대용량 데이터는 Dapper.Plus 권장)
설치
방식1:NuGet 패키지 관리자 콘솔(PMC)
Install-Package Dapper
방식2:.NET CLI(.NET Core/.NET5+ 권장)
dotnet add package Dapper
방식3:Visual Studio 그래픽 인터페이스
솔루션 탐색기 → 프로젝트 우클릭 → NuGet 패키지 관리,Dapper를 검색해 설치합니다.
중요 안내:Dapper 자체에는데이터베이스 드라이버가 포함되지 않습니다!
SQL Server 사용 시 별도로Microsoft.Data.SqlClient,MySQL은MySqlConnector를 설치해야 합니다.
예제
using Dapper;
using Microsoft.Data.SqlClient;
// 1. IDbConnection 생성
string connStr = "데이터베이스 연결 문자열";
using var conn = new SqlConnection(connStr);
// 2. SQL 작성
string sql = "SELECT * FROM Article WHERE Id = @Id";
// 3. 쿼리 실행 및 엔티티 자동 매핑
var article = conn.QueryFirstOrDefault<Article>(sql, new { Id = 1 });
public class Article
{
public int Id { get; set; }
public string Title { get; set; }
}Code language: JavaScript (javascript)
비교
| 프레임워크 | 유형 | SQL 제어 | 적용 시나리오 |
|---|---|---|---|
| Dapper | Micro ORM | 수동 SQL 작성 | 고성능 요구, 복잡한 쿼리, 기존 프로젝트 리팩토링 |
| EF Core | Full ORM | SQL 자동 생성, 네이티브 SQL도 지원 | 빠른 개발, 간단한 업무, SQL 수작업을 피하고 싶을 때 |
소개와 설치
Next: 첫 번째 예제