ORM

이재현·2024년 8월 16일

🤍 ORM

💙 RDB

RDB는 관계형 데이터베이스(Relational Database)로, 데이터가 행과 열이 있는 테이블 형태로 구성되는 집합 이론 모델을 기반으로 한다.
전반적으로 관계형 데이터베이스는 강력하고 효율적인 데이터 저장 및 검색 기능을 제공한다.
하지만, 복잡한 객체 지향 개념을 모델링하는데 적합하지 않다. (상속, 다형성, 오브젝트, 레퍼런스)

그렇기에 테이블을 객체지향적으로 사용할 수 있도록 하기 위해서 Object Relational Mapping, 즉 ORM를 사용한다.
ORM는 객체와 DB 테이블이 매핑을 이루는 것으로, 코드 상에서 생성한 객체가 DB의 어떤 테이블과 연결된다는 것을 의미한다.

💙 ORM 종류

Java

  • JPA, Hibernate, EclipseLink, DataNucleus, Ebean 등
    Python
  • Django ORM, Peewee, SQLAlchemy 등
    JavaScript / TypeScript
  • Sequelize, TypeORM, Mongoose 등



🩵 JDBC

JDBC는 Java Database Connectivity로, Java에서 데이터베이스에 연결하고 SQL 쿼리를 실행하기 위한 Java API이다.
데이터베이스를 사용하다 보면 다양한 데이터베이스의 종류가 있는데, 이러한 다양한 데이터베이스와의 연결을 위해서 JDBC를 사용한다.
즉, 데이터베이스의 종류와 상관없이 동일한 코드로 해결할 수 있게 해주는 것이 JDBC이다.

💙 JDBC 특징

직접적인 SQL Query 실행

  • JDBC를 사용하면 개발자가 직접적으로 SQL Query를 작성하여 DB에 전송할 수 있다.

높은 유연성

  • 모든 유형의 쿼리 및 데이터베이스의 조작이 가능하기 때문에 유연하게 작성할 수 있다.

저수준 API

  • JDBC는 저수준의 API이기 때문에 DB 작업을 처리하는데 상당히 많은 양의 코드가 요구된다.

🩵 JDBC Template

JDBC Template은 Spring Framework의 일부로 제공되는 JDBC의 확장이다.
JBDC의 저수준 API를 추상화하여 보다 간단하고 효율적으로 DB와 상호작용할 수 있도록 지원한다.

💙 특징

간결한 코드

  • JdbcTemplate은 JDBC와 비교하여 훨씬 간결한 코드를 제공한다.

자동 리소스 관리

  • 커넥션 생성, 예외 처리, 리소스 해제와 같은 작업을 자동으로 처리한다.

SQL 파라미터화

  • 자동으로 SQL 쿼리 파라미터를 처리하여 SQL Injection 공격을 방지한다.



🩵 JPA

JPA는 Java Persistence API로, 객체 관계 매핑(ORM)을 위한 Java 표준 API이다.
객체와 데이터베이스 간의 매핑을 자동으로 처리하며, Hibernate, EclipseLink, OpenJPA 등의 구현체를 사용해서 실제 데이터베이스와 상호작용한다.

💙 JPA 특징

객체지향적 접근

  • 데이터베이스 테이블을 객체로 매핑하여 객체 지향적인 접근을 할 수 있게 한다.

쿼리 생성 자동화

  • 개발자의 SQL 쿼리 작성 없이도, JPA가 자동으로 SQL을 생성하여 데이터베이스에 전송한다.

캐시 및 지연 로딩

  • JPA는 자동으로 캐싱과 지연로딩을 처리하여 성능을 향상시킨다.

0개의 댓글