simDev1234
심플하고 차분하게
simDev1234
전체 방문자
오늘
어제
  • 분류 전체보기
    • Computer Science
      • Basic Math
      • Data Structure
      • Algorithm
      • Database
      • OS
    • Language
      • Java
      • Kotlin
      • SQL
    • Framework
      • Spring
      • Orm&Mapper
      • 프로젝트로 스프링 이해하기
      • 스프링 라이브러리
    • Infra
      • Cloud
      • Docker
      • Redis
      • AWS, Azure
      • Device
    • Etc
      • CleanCoding
    • Git,Github

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 자바프로그램
  • controllerTest
  • 스프링
  • 참조변수
  • 자바프로그래밍
  • JVM메모리구조
  • 참조타입
  • 404
  • 자바
  • 자바메모리구조
  • null
  • scanner #next() #nextLine()
  • 컨트롤러

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
simDev1234

심플하고 차분하게

ORM 기술이란 무엇인가?
Framework/Orm&Mapper

ORM 기술이란 무엇인가?

2022. 9. 27. 15:32

|  개요

- 영속성이란, 프로그램이 종료된 이후에도 한 번 처리한 데이터는 DB에 영구적으로 반영된 상태여야 함을 뜻한다.

- 자바를 통해서 DB와 소통하는 방식은 다양한데,

  그 중에서 Persistence Framework를 사용하면 Object를 통해 SQL문을 만들 수 있다.

- Persistence Framework는 크게 1) SQL Mapper 2) ORM 으로 나뉠 수 있으며, 두번째 방식이 현재 가장 많이 사용되는 방식이다.

 

[ 영속성이란? ]

영속성이란, 데이터를 생성한 프로그램이 종료된 후에도 사라지지 않는 데이터 특성

[ 출처 ] 위키백과

 

[ 자바에서 데이터를 저장하는 방법 ]

- JDBC 프로그래밍 (순수 Java)

- Spring JDBC

- Persistence Framework : Hibernate, MyBatis....
  - 크게 SQL Mapper와 ORM으로 나뉜다.

 

[ Persistence Framework의 종류 ]

구분 내용 프레임워크명
SQL Mapper SQL mapper를 통해 sql <-> object Mybatis, JdbcTemplates(Spring)
ORM ORM을 통해 sql <-> object JPA, Hibernate

 

|  ORM

- Object Relational Mapping : 객체 관계 매핑의 약자

- 객체와 DB의 관계를 매핑해주는 도구를 말한다.

장점 - 직관적인 코딩을 통해 가독성을 높히고, 비즈니스 로직에 집중할 수 있어 생산성이 높아진다.
- 재사용 및 유지보수의 편리성 증가
- DBMS에 대한 종속성이 저하된다.
단점 - 완벽한 ORM만으로만 서비스를 구현하기 어렵다.
- 프로시저가 많은 시스템에서는 ORM의 객체 지향적인 장점을 활용하기 어렵다.

 

|  언어별 ORM 종류

  • Flask : SQLAlchemy
  • Django : 내장 ORM
  • Node.js : Sequalize
  • Java : Hybernate, JPA
  • GraphQL : Prisma

    [ 출처 ] https://azderica.github.io/00-db-orm/

 

|  JPA와 Hibernate, Spring Persistence API

- JPA는 Java Persistece API의 약자로, 말 그대로 인터페이스이자 명세를 의미한다.

- 그리고 JPA를 구현한 것이, Hibernate이다. 

- Spring Data JPA는 Spring 프레임워크에서 사용할 수 있게, JPA를 한단계 추상화시킨 모듈이다. 

출처:https://suhwan.dev/2019/02/24/jpa-vs-hibernate-vs-spring-data-jpa/

 

 

 

[참고 및 출처]

https://gmlwjd9405.github.io/2019/02/01/orm.html

https://hanamon.kr/orm%EC%9D%B4%EB%9E%80-nodejs-lib-sequelize-%EC%86%8C%EA%B0%9C/

https://azderica.github.io/00-db-orm/

https://suhwan.dev/2019/02/24/jpa-vs-hibernate-vs-spring-data-jpa/

'Framework > Orm&Mapper' 카테고리의 다른 글

[JPA] 인텔리J에서 JPA Entity 기반 ERD 그리기  (0) 2022.10.19
[JPA] repository.save()의 반환값이 안 들어올 때  (0) 2022.10.19
[JPA] JPA 전반에 대해 간략히 이해하기  (0) 2022.10.06
[JPA] JPA 프로젝트를 생성, 엔터티 단위 CRUD (JPQL이란?)  (0) 2022.09.29
JPA란 무엇인가?  (0) 2022.09.27
    'Framework/Orm&Mapper' 카테고리의 다른 글
    • [JPA] repository.save()의 반환값이 안 들어올 때
    • [JPA] JPA 전반에 대해 간략히 이해하기
    • [JPA] JPA 프로젝트를 생성, 엔터티 단위 CRUD (JPQL이란?)
    • JPA란 무엇인가?
    simDev1234
    simDev1234
    TIL용 블로그. * 저작권 이슈가 있는 부분이 있다면 댓글 부탁드립니다.

    티스토리툴바