inblog logo
|
vosw1
    C#

    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

    RSS·Powered by Inblog