ORM, SQL Mapping

마자나다·2023년 12월 27일
0

DB

목록 보기
3/4

앞선 Persistence 정리 글 : https://velog.io/@guscjf0903/JDBC-Persistence

Persistence Framework

  • JDBC 프로그래밍의 복잡합이나 번거로움 없이 간단한 작업만으로 DB와 연동되는 시스템을 개발할 수 있고 안정적인 구동이 가능하다.
  • 모든 Persistence Framework는 JDBC API를 이용한다. 이를 SQL Mapping과 ORM으로 나눌 수 있다.

SQL Mapping이란?

  • SQL을 직접 작성, SQL문과 객체의 필드를 매핑하여 데이터를 객체화한다.
  • 주의할 점은 객체 관계를 직접 매핑하는 것이 아닌, 직접 작성한 SQL문의 질의결과와 객체의 필드를 매핑한다.

My Batis

SQL Mapper의 대표적인 프레임워크이다.

  • 반복적인 JDBC프로그래밍을 단순화하였다.
  • SQL 쿼리들을 XML파일에 작성하여 코드와 SQL을 분리하여 관리한다.
  • JDBC만 사용하면 결과를 가져와서 객체의 인스턴스에 매핑하기 위해 많은 코드가 필요하지만 그 코드를 작성하지 않게 도와준다.

SQL Mapper의 한계점

순수 JDBC만 사용한 것에 비해 SQL Mapper를 통해 많은 편리함이 있지만 아직 불편함이 있다.
1. SQL을 개발자가 직접 작성함으로 문제점이 발생할 수 있다.
2. 사용하는 쿼리 문법이나 데이터 타입은 DB마다 조금씩 다르기 떄문에 특정 DB에 종속된다.
3. 테이블마다 비슷한 CRUD 작업을 계속 진행하며 이를 개발자가 일일이 쿼리를 작성하여야 한다.

SQL문을 직접 작성하면 SQL에 의존적인 설계를 할 수 밖에없다. -> 객체간의 관계는 사라지고 DB에 대한 처리만 집중하게 된다.
이런 문제를 패러다임 불일치이라고 한다. 각각 지향하는 목적이 다르기 때문에 문제가 생긴다.

ORM이란?

  • Object Relational Mapping, 말 그대로 객체-관계 매핑이라는 것이다.
  • 패러다임 문제를 해결하기 위해 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성한다.
  • 객체와 관계형데이터베이스의 데이터를 자동으로 매핑해주는 역할이다.

ORM의 단점

  • 객체 지향적인 코드로, 더 직관적이고 비즈니스 로직에 집중할 수 있게 도움을 준다.
  • 재사용성과 유지보수의 편리성이 증가한다.
  • DBMS에 대한 종속성이 줄어든다.

ORM의 단점

  • ORM으로만 서비스를 구현하기 어렵다.
  • 프로젝트의 복잡성이 커질경우 ORM구현 난이도가 증가한다.
  • 프로시저가 많은 시스템에서는 ORM의 객체지향적인 장점을 활용하기가 어렵다.

JPA

  • Java Persistent API의 줄임말로, 자바 ORM 기술에 대한 API표준 명세이다.
  • JPA는 특정 기능을 하는 라이브러리가 아니고, ORM을 사용하기위한 인터페이스를 모아둔 것 이다.
  • 요즘은 ORM에 익숙해지니 쿼리를 짜지않게 되었고, 코드가 DB에 종속되지않는 느낌으로 짜는 흐름이 되었다.

Hibernate

  • 하이버네이트는 JPA구현체 중 하나이다.
  • SQL을 직접 사용하지 않고 직관적인 메소드를 사용해 데이터를 조작할 수 있다.
  • SQL을 사용하지 않는다고 해서 JDBC API를 사용하지 않는것은 아니다! 메소드 내부에서 JDBC APi가 동작하고 있다. 단지 직접 SQL문을 작성하지 않을 뿐이다.
  • 하이버네이트가 나오고 자바스프링에서 표준으로 하이버네이트를 차용해 JPA를 아얘 사용하기 시작하였다.

출처및 참고
https://firework-ham.tistory.com/110
https://hahahoho5915.tistory.com/47
https://dev-coco.tistory.com/74
https://gmlwjd9405.github.io/2018/05/15/setting-for-db-programming.html
https://www.youtube.com/watch?v=VTqqZSuSdOk

profile
우왕좌왕 개발

0개의 댓글