티스토리 뷰

개발냥이/자바(Java)

JPA & SQL

데브캣_DevCat 2022. 8. 13. 21:48

What I Learned

JPA를 이야기 하기 전에 ORM(Object-Relational Mapping)을 알 필요가 있다. ORM이란 객체는 객체대로 생성을 하고 관계형 데이터베이스는 데이터베이스대로 설계를 한 후에 ORM이라는 프레임워크가 중간에서 매핑해주는 기술이다

개발자는 오로지 매핑하는 방법만 전달해주면 되는 것이다.
JPA는 이러한 ORM을 위한 표준 인터페이스(기술)이다.데이터베이스는 SQL 이라는 언어를 사용하기 때문에 자바 언어로 명령을 내릴 수가 없다. 또한 데이터베이스별로 문법이 조금씩 다르기 때문에 데이터베이스에 종속될 수 밖에 없는데 JPA는 개발자가 직접 SQL을 작성하지 않고 JPA가 SQL을 생성하여 DB와 소통함으로써 객체지향 프로그래밍을 할 수 있게 된다.
JPA는 워낙 내용이 방대하여 오늘은 우선 기본적인 개념만 잡고 강의와 실습을 통해서 내용을 차후에 보충하고자 한다!


JPA & SQL

JPA(Java Persistence API)

자바 진영의 ORM 기술 표준으로,

  • JPA가 제공하는 API를 사용하면 객체를 DB에 저장하고 관리할 때, 개발자가 직접 SQL을 작성하지 않아도 된다.
  • JPA가 개발자 대신 적절한 SQL을 생성해서 DB에 전달하고, 객체를 자동으로 Mapping 해준다.
  • JPA를 활용한다면 모든 SQL에 대해 개발자 대신 JPA가 자동으로 해결해 준다는 점에서 생산성을 크게 높인다.

ORM(Object-Relational Mapping)은 객체와 관계형 DB를 매핑한다는 것.

DB는 SQL이라는 언어를 사용하기 때문에 객체를 데이터베이스에 넣기 위해서는 자바가 아닌 SQL문을 통해 변환해서 저장해야하고, 데이터베이스에서 객체를 다시 꺼내오기 위해서는 복잡한 SQL문을 작성해야 한다. 결국 객체를 단순히 데이터 전달 목적으로 사용할 뿐 객체지향적으로 프로그래밍을 할 수가 없다. 이는 객체지향과 관계형 데이터베이스 간의 패러다임이 불일치하기 때문이다. 이를 해결하기 위해서 나온 기술이 ORM이다.

객체를 마치 자바 컬렉션에 저장하듯 저장할 수 있고 이에 대해 ORM 프레임워크가 적절한 SQL을 생성해서 DB에 객체를 저장해준다.

JPA는 자바 언어를 DB가 이해할 수 있게하고 나아가 SQL을 쓰지 않고 데이터 관리에 편리한 기능을 제공하는 번역기라고 할 수 있다.

또한 데이터베이스에 따라 조금씩 다른 문법을 신경쓰지 않고 오로지 자바로 데이터베이스와 소통할 수 있다는 장점이 있다.

  • 복잡한 쿼리 처리
    • 통계 처리 같은 복잡한 쿼리를 사용할 경우는 SQL문을 사용하는 게 나을 수도 있다. JPA에서는 Native SQL을 통해 기존의 SQL문을 사용할 수 있지만 그러면 특정 데이터베이스에 종속된다는 단점이 생긴다. 이를 보완하기 위해서는 SQL과 유사한 기술인 JPQL을 지원한다.
  • 성능 저하 위험
    • 객체 간의 매핑 설계를 잘못했을 때 성능 저하가 발생할 수 있으며, 자동으로 생성되는 쿼리가 많기 때문에 개발자가 의도하지 않는 쿼리로 인해 성능이 저하되기도 한다.
  • 학습 시간
    • JPA를 제대로 사용하려면 알아야 할 것이 많아서 학습하는 데 시간이 오래 걸린다.
반응형

'개발냥이 > 자바(Java)' 카테고리의 다른 글

[자바] 다형성의 개념 정리  (0) 2022.08.31
IoC(Inversion of Control), DI(Dependency Injection) & Bean  (0) 2022.08.21
MVC 패턴  (0) 2022.08.21
자바가상머신(JVM)  (0) 2022.08.21
JAVA List, Array, List.toArray()  (0) 2022.08.13
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함