티스토리 뷰

WEB/기타

DBMS, JDBC, ORM, Hibernate

silverline79 2024. 1. 20. 00:00

DBMS(DataBase Management System)

다수의 사용자들이 데이터베이스에 접근 할 수 있도록 해주는 소프트웨어 도구

DBMS 종류 : MySQL, ORACLE, Postgres

JDBC(Java DataBase Connectivity)

JAVA에서 데이터베이스에 접속하기 위한 DBMS 접속 인터페이스

ORM(Object-relational mapping)

객체 지향 프로그래밍에서 객체(Object)와 관계형 데이터베이스의 데이터(Table)를 자동으로

매핑시켜주는 개념

객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용

객체 모델과 관계형 모델 간에 불일치가 존재

ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결

ORM(Object-relational mapping) 종류

Flask - SQLAlchemy

Django - 내장 ORM을 가진다.

Node.js - Sequalize

Java - Hybernate, JPA

Persistence Framework
SQLMapper ORM
SQL SQLMapper Object 필드
SQL 문장으로 직접 데이터베이스 데이터를 다룬다.
SQL을 직접 작성해줘야 한다.
Mybatis, JdbcTemplates(spring)
데이터베이스 데이터 ORM Object 필드
객체를 통해 간접적으로 데이터베이스 데이터 다룬다.
객체와 관계형 데이터베이스의 데이터를 자동으로 맵핑 시켜준다.
SQL Query가 아닌 직관적인 코드(메서드)로 데이터 조작
JPA, Hibernate

Hibernate

JPA의 실제 구현체

ORM(Object/Relational Mapping) 프레임워크

HQL(Hibernate Query Language)라는 객체 질의어를 제공

SQL을 몰라도 되기 때문에 개발자의 부담이 줄어든다.

실행 시에 DBMS에 맞추어 SQL 문을 자동 생성하기 때문에 특정 DBMS에 종속되지 않는다.

데이터베이스의 정규화(normalized)가 잘돼 있어야 한다.

테이블을 객체와 연결하기 쉽고, 객체를 통해 테이블의 데이터를 다루기가 쉽다.

데이터베이스의 특징에 맞추어 최적화를 할 수 없다.

데이터베이스 마다 실행 성능을 높이고 데이터 처리를 쉽게 해주는 특별한 기능을 각각 가지고 있다.

이런 기능을 활용할 수 있도록 전용 SQL을 제공하지만, ORM에서는 SQL을 직접 작성하지 않기 때문에 최적화가 쉽지 않다.

 

사용자가 Database에 데이터를 저장하고 꺼내기 위해서는 DBMS와 통신을 한다.

여러 DBMS가 존재함, Java언어에서는 JDBC를 이용함.

ORM은 객체 지향 프로그래밍에서 객체와 관계형 데이터베이스의 데이터를 맵핑 시켜주는 것이며 Java에서는 JPA 사용, Jpa의 실제 구현체가 Hibernate

ORM 기술을 구현한 프레임워크에 대한 표준화 JPA JPA 인터페이스에 맞추어 구현된

프레임워크 Hibernate, TopLink, CoCoBase 가 있다.

댓글