728x90
Java에서 데이터를 저장하는 방법
자바에서 데이터를 저장하는 방법
- JDBC
- Spring JDBC
- Persistence Framework(Hibernate, Mybatis 등)
Persistence Framework
- Persistence Framework를 이용하면 JDBC 프로그래밍의 복잡함이나 번거로움 없이 간단한 작업만으로 데이터베이스의 데이터를 처리할 수 있다.
- 빠르고 쉽게 개발이 가능
- Persistance Framework는 일반적으로 SQL Mapper와 ORM으로 나눠진다.
1) SQL Mapper
- SQL <-> SQL Mapper <-> Object field
- SQL문으로 직접 데이터베이스 데이터를 다룬다.
- Mybatis, JdbcTemplates(Spring)
2) ORM
- Database 데이터 <-> ORM <-> Object field
- 객체를 통해 간접적으로 데이터베이스 데이터를 다룬다.
- JPA, Hibernate
ORM이란?
ORM(Object Relational Mapping)은 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것이다.
- 객체 지향 프로그래밍은 클래스를 사용, 관계형 데이터베이스는 테이블을 사용
- 객체 모델과 관계형 모델 간에 불일치가 존재 - ORM은 객체 지향 언어에서 사용할 수 있는 가상 객체 데이터베이스를 구축하는 방법
- 객체를 통해 간접적으로 데이터베이스 데이터를 다룰 수 있다 => 불일치 해결
- 객체 간의 관계를 바탕으로 SQL을 자동생성 - 객체의 논리적 표현을 데이터베이스에 저장할 수 있는 형태로 변환, 객체의 속성과 관계를 보존하여 필요할 때 객체로 다시 로드할 수 있다 => 이 저장 및 검색 기능이 구현되면 객체는 영속적(persistent)이다.
- ORM을 위한 상용 또는 무료 소프트웨어 패키지들이 있다. 자신만의 ORM tool을 만들어 사용하는 경우도 있음
// Persistant API라고 할 수도 있다. (JPA, Hibernate 등)
장점
- 객체 지향적인 코드를 사용하므로 직관적이고 비즈니스 로직에 더 집중할 수 있다
- CRUD를 위한 SQL문을 작성하지 않아도 된다.
- 객체별로 코드를 작성 => 가독성이 높아진다. - 생산성의 증가: 재사용 및 유지보수가 편리하다.
- ORM은 독립적으로 작성되어있고, 해당 객체들은 재사용이 가능하다. - DBMS 종속성이 줄어든다
단점
- 완벽한 ORM으로만 서비스를 구현하기가 어렵다.
- 설계를 매우 신중하게 해야한다: 잘못 구현된 경우 속도 저하나 심한 경우, 일관성이 무너지는 문제점
- 프로젝트 복잡성이 커질 경우 난이도가 올라간다.(어렵다)
- 일부 자주 사용되는 대형 쿼리는 속도를 위해 SP를 쓰는 등 별도의 튜닝이 필요할 수 있다.
- DBMS의 고유 기능을 이용하기 어렵다. - 프로시저가 많은 시스템에서는 ORM의 객체 지향적인 장점을 활용하기 어렵다.
- 다시 객체로 바꾸는 과정에서 생산성 저하나 리스크가 많이 발생할 수 있다.
종류
- Flask: SQLAlchemy
- Django: 내장 ORM
- Node.js: Sequalize
- Java: Hybernate, JPA
- GraphQL: Prisma
참고
1) https://en.wikipedia.org/wiki/Object%E2%80%93relational_mapping#Overview
728x90
'database' 카테고리의 다른 글
Programmers SQL 고득점 Kit 풀기(1) (1) | 2025.01.10 |
---|---|
[DB] Unique index와 pk (0) | 2023.09.15 |
위키만들기 - 글의 history를 저장하는 방법 (0) | 2023.08.08 |
[MySQL, MariaDB] procedure(프로시저) 생성, 수정, 삭제 (0) | 2023.02.06 |
H2 데이터베이스 (3) | 2022.10.01 |