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