Entity Framework란?

송민경's avatar
Nov 07, 2024
Entity Framework란?

1. Entity Framework

  • .NET에서 제공하는 객체 관계 매핑(ORM, Object-Relational Mapping) 프레임워크
 

2. ORM (Object-Relational Mapping)

  • 객체 지향 프로그래밍 언어에서 사용하는 객체 모델과 관계형 데이터베이스의 테이블 간에 데이터 변환을 자동으로 처리하는 기술
  • 객체 지향적인 방식으로 데이터베이스와 상호작용할 수 있음 SQL을 직접 작성할 필요 없이, 객체 모델을 다루듯이 데이터베이스를 다룰 수 있음
  • ORM의 주요 기능
    • 자동 매핑 : 객체 모델(예: 클래스)과 관계형 데이터베이스의 테이블 간 매핑을 자동 처리
    • CRUD 작업 자동화 : Create, Read, Update, Delete와 같은 기본적인 작업을 자동 처리
    • SQL 추상화 : SQL을 직접 작성하지 않고도 데이터베이스 작업을 처리 코드가 더 직관적이고 유지보수가 용이
 

3. Entity Framework의 특징

  • 객체 지향적인 접근
    • C#의 클래스를 데이터베이스 테이블과 연결하여 객체처럼 데이터를 다룰 수 있게 해줌
  • LINQ (Language Integrated Query)
    •  LINQ를 지원하여 C# 코드 내에서 SQL과 유사한 방식으로 쿼리를 작성 SQL을 직접 작성할 필요 없이, C# 코드로 데이터베이스와 상호작용할 수 있어 코드가 더 직관적
  • 마이그레이션 (Migration)
    • 마이그레이션 기능을 제공 엔티티 클래스의 변경 사항을 자동으로 데이터베이스 스키마에 반영 데이터베이스 스키마 변경을 손쉽게 관리
  • 데이터베이스 독립성
    •  SQL Server, MySQL, PostgreSQL 등 다양한 데이터베이스와 연동 가능 데이터베이스 종류에 상관없이 동일한 코드로 데이터를 처리 가능
  • 자동 CRUD 작업
    • CRUD(Create, Read, Update, Delete) 작업을 자동으로 처리하는 기능을 제공 DbContext 클래스를 통해 데이터베이스와 쉽게 상호작용 가능
 

4. Entity Framework VS Java의 ORM 라이브러리 (Hibernate, MyBatis)

특성
엔티티 프레임워크 (EF)
자바 ORM 라이브러리
언어
C# (Microsoft .NET 환경)
Java (JVM 환경)
프레임워크
.NET Framework, .NET Core, .NET 5/6/7
Java EE, Spring, Java SE (JVM 기반)
자동 매핑
클래스와 테이블 간 자동 매핑 (객체와 DB 테이블 간 연결)
Hibernate : 객체-테이블 자동 매핑 MyBatis : 수동 SQL 매핑
주요 특징
LINQ를 통한 SQL 쿼리 생성,  자동 CRUD 작업 지원
Hibernate : HQL(객체지향 쿼리 언어) MyBatis : 수동 SQL 관리
데이터베이스 지원
SQL Server, MySQL, PostgreSQL, SQLite 등 지원
Hibernate : 다양한 DB 지원 (MySQL, PostgreSQL, Oracle 등) MyBatis : SQL 쿼리 기반
마이그레이션
자동 마이그레이션을 통해 데이터베이스 스키마 변경
Hibernate : 스키마 자동 생성 기능 MyBatis : 명시적으로 SQL을 작성
학습 곡선
ORM 개념이나 DbContext 사용법을 배우는 데 시간이 걸릴 수 있음
Hibernate, MyBatis : 학습 곡선이 없음 MyBatis : SQL을 직접 다루기 때문에 더 익숙
SQL 관리
LINQ로 SQL을 직접 작성할 필요 없이 객체 지향적으로 처리
Hibernate : HQL 또는 Criteria API 사용 MyBatis : SQL을 명시적으로 작성
성능
복잡한 쿼리에서 성능 저하 가능성 있음, 성능 튜닝 필요
Hibernate : 객체지향적 접근 → 성능 저하 가능 MyBatis : 수동 SQL 작성으로 성능 최적화 가능
생태계와 커뮤니티
.NET 생태계 내에서 매우 활발하지만, Java의 Hibernate보다는 상대적으로 작은 커뮤니티
Hibernate : 큰 커뮤니티와 생태계 MyBatis는 더 세밀한 제어 가능
Share article

vosw1