ORM이란?
ORM이란 객체와 DB의 테이블이 매핑을 이루는 것을 말함 (Java 진영에 국한된 기술이 아님)
즉, 객체가 테이블이 되도록 매핑 시켜주는 것
ORM을 이용하면 SQL Query가 아닌 직관적인 코드(메서드)로서 데이터를 조작할 수 있음
예를들어, User 테이블의 데이터를 출력하기 위해서 MySQL에서는 SELECT * FROM user; 라는 query를 실행해야 하지만,
ORM을 사용하면 User 테이블과 매핑된 객체를 user라 할 때, user.findAll() 라는 메서드 호출로 데이터 조회가 가능
query를 직접 작성하지 않고 메서드 호출만으로 query가 수행되다 보니, ORM을 사용하면 생산성이 매우 높아짐
그러나 query가 복잡해지면 ORM으로 표현하는데 한계가 있고, 성능이 raw query에 비해 느리다는 단점이 있음
그래서 나중에 다루게 될 JPQL, QueryDSL 등을 사용하거나 한 프로젝트 내에서 Mybatis와 JPA를 같이 사용하기도 함
JPA와 ORM 그리고 JPA 사용 이유?
JPA란 자바 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음
실제적으로 구현된것이 아니라 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크
ORM은 객체(Object)와 DB의 테이블을 Mapping 시켜 RDB 테이블을 객체지향적으로 사용하게 해주는 기술
객체와 RDB를 별개로 설계하고 중간에서 ORM이 매핑해주는 역할을 함
즉, ORM은 SQL문이 아닌 RDB의 데이터 그 자체와 매핑하기 때문에 SQL을 직접 작성하지 않음
여기서 RDB 테이블이란, 관계형 데이터베이스를 말함
RDB 테이블은 객체지향적 특성(상속, 다형성, 레퍼런스) 등이 없어서 Java와 같은 객체 지향적 언어로의 접근이 쉽지 않음
이럴때 ORM을 사용하면 보다 객체지향적으로 RDB를 사용할 수 있음
Java에서 사용하는 대표적인 ORM으로는 JPA와 그의 구현체 Hibernate가 있음
JPA가 등장하기 전에는 위에 설명했듯이 MyBatis라는 Object Mapping 기술을 이용하였는데, MyBatis는 Java 클래스 코드와 직접 작성한 SQL 코드를 매핑 시켜주어야 했음
하지만 JPA와 같은 ORM기술은 객체가 DB에 연결되기 때문에 SQL을 직접 작성하지 않음
따라서 JPA라는 ORM 기술에 의해 DB에서 조회한 데이터들이 객체로 연결되어 있고, 객체의 값을 수정하는 것은 DB의 값을 수정하는 것이라고 할 수 있음
참고 자료 : https://victorydntmd.tistory.com/195
https://velog.io/@rladuswl/ORM%EC%9D%98-%EA%B0%9C%EB%85%90-JPA%EC%99%80-MyBatis-%EC%B0%A8%EC%9D%B4
'프로그래밍 > JPA' 카테고리의 다른 글
[JPA] 복합키 설정 방법(@EmbeddedId, @IdClass) (0) | 2023.03.28 |
---|---|
[JPA] Order by multiple Columns (0) | 2023.02.24 |
[JPA] JPA 날쿼리 사용하기(nativeQuery = true) (0) | 2022.12.29 |
[JPA] jpa delete 안됨 (0) | 2022.11.14 |
[JPA] JPA란? (0) | 2022.09.28 |