ORM의 필요성

Feb 15, 2024
ORM의 필요성

  • DB세상의 자료형은 스칼라만 존재함
object나 collection을 가질 수 없음
→ 테이블로만 표현할 수 있음
데이터에 저장할 때 가장 효과적인 것(빠르게 찾을 수 있음)이 DB이기에 DB에 넣어야 함
 
  • 프론트는 종류가 엄청 많음
: 브라우저, 휴대폰, 자동차...
브라우저만 HTML을 전송할 수 있고 나머지는 다 JSON임
 
  • 프론트가 DB에 오려면 DB의 IP, PASSWORD 등을 알아야 하는데
프론트에 심어놓기에는 너무 위험함
DB는 스프링이라는 IP만 접근할 때 허용해야만 보안성이 좋음
  • 그래서 미들웨어가 필요함
: 스프링, ASP 등 서버의 종류가 많음
그중에 우리가 사용하는 것이 스프링
 
  • 서버를 하나 두면 단일 진입점이 되서 모두 서버에게 요청함
HTTP메서드 요청만 가능함(GET, POST,UPDATE,DELETE)
URL, URI로 요청함
 
  • 서버가 DB에 SQL(질의)을 날리게 됨
 
  • DB가 응답하는 데이터는 TABLE 데이터임
플랫하게 들고올 수 밖에 없음
필드들을 다 적어야 함
ROW를 여러개 줄 수 밖에 없음
 
  • 서버가 TABLE 형태의 데이터가 받음
DB와 JAVA가 서로 데이터의 자료형이 이질적임(다름)
DB의 TABLE 과 JAVA의 OBJECT
JAVA는 플랫하게 받을 수는 있지만 받으면 중복되는 데이터가 생길 수 있음
하지만 JAVA는 플랫하게 받을 필요가 없음
굴곡진 데이터(스칼라 데이터)를 OBJECT나 COLLECTION을 넣을 수 있음
플랫한 데이터를 받아서 브라우저에게 프론트에게 잘 활용해서 해라고 하면 프론트와 일이 안 됨
그때는 프론트앤드라는 개발자가 없어서 백엔드 개발자가 FOR문 돌려서 뿌렸음
 
  • 이제는 백엔드 개발자가 울퉁불퉁하게 만들어서 넘겨줘야함
이렇게 굴곡진 데이터로 만드는 것이 ORM
TABLE데이터를 OBJECT로 바꿔서 프론트에 보내야 좋아함
 
  • 플랫한 데이터를 그대로 줘도 되는 경우가 있음
BOARD만 들고 올 경우 줘도 됨 → 우리가 판단하는 것
 
  • 주로 JOIN했을 때 ORM을 사용함
DB는 TABLE 2개가 필요하지만 JAVA는 클래스를 추가해서 담아낼 수 있음
DB한테 받은 데이터를 DTO로 받음 → 플랫함
다른 클래스로 옮겨 담음 → 굴곡짐 = ORM
 

ORM

  • 객체 관계 매핑, Object-Relational Mapping
  • 데이터베이스와 객체 지향 프로그래밍 언어 간의 데이터 변환을 자동화하는 기술
  • 데이터베이스 테이블을 객체, 데이터베이스의 row를 객체의 인스턴스로 매핑
객체 간의 관계를 유지하며 데이터를 조작할 수 있도록 도와줌
  • 대표적인 ORM 프레임워크
Java에서는 Hibernate, Python에서는 Django ORM, C#에서는 Entity Framework 등
 
기술 다 배우면 내가 SQL로 질의하고 처음부터 ORM으로주니 엄청 편해짐
그전에 내가 한번 해보면서 너무 귀찮아야 기술을 쓸때 왜쓰는지 알게되고
새 기술 배우는게 재밌는게 됨
그렇게 학습해야함
편하면 재밌는 것임
플랫한 데이터를 DTO로 받는것까지는 괜찮은데 ORM으로 만드는 것이 어려운 것
이걸 모른다는 것은 JAVA를 모른다는 것 → 연습해야 함
 
Share article

vosw1