JDBC, SQL MAPPER, ORM의 공통점
💡 영속성(Persistence) 데이터를 생성한 프로그램의 실행이 종료되더라도
사라지지 않는 데이터의 특성, 영구히 저장
ORM(Object Relational Mapping)
💡 객체와 관계형 DB를 매핑
SQL Query가 아닌 메서드로 데이터 조작 ex) SELECT * FROM USER;→ user.findAll();
ORM의 장점과 단점
장점
- 패러다임 불일치 문제 해결 - 객체지향 언어가 가진 장점을 활용 가능
- 생산성 - 반복적인 CRUD SQL을 개발자가 직접 작성하지 않아도 된다
- 데이터 접근(DB 종속성) 추상화 - DB마다 조금씩 다른 타입, SQL Query 문법을 손쉽게 해결한다. ex) MySQL, ORACLE 바뀌어도 코드는 일치하기 때문에 상관없음.
- 유지보수성 - 필드 추가, 삭제 시 관련된 SQL 쿼리를 직접 수정하지 않고 Entity만 수정하면 된다.
- SQL Mapper나 JDBC와 다르게 컴파일 단계에 쿼리에 대한 에러를 알 수 있다.
단점
- 복잡한 쿼리 사용이 아주 어렵다. → JPQL을 지원한다. → QueryDSL 을 함께 사용한다.
JPA
💡 JPA는 JAVA ORM에 대한 API 표준 명세
인터페이스로 구성되어 있으며 사용하려면 ORM 프레임워크를 사용
ORM을 사용함으로써 우리는 데이터베이스 서버가 없는 상태에서도 개발이 가능하도록 되어있다.
정리
JDBC → SQL Mapper(JDBC Template, Mybatis) → ORM(JPA Hibernate)
모두 JDBC API를 내부적으로 사용하고 있다.
SQL Mapper, ORM 들은 내부적으로 Prepared Statement를 사용하고있다.
SQL Mapper, ORM 들은 Database Connection등 리소스 관리를 자동으로 해주고있다.
ORM은 컴파일 에러가 발생한다. 객체지향 패러다임에 대응할 수 있다.
ORM을 이용하면 우리는 개발에 집중할 수 있다!
Insert 문이 몇번 나가고, join 몇번 나가고, SQL 작성하고, 테스트하고
개발자가 할일 = 연관관계 설정 끝. JPA가 알아서 다 해준다. 생산성 올라간다.
'TIL' 카테고리의 다른 글
TIL - 2024/09/19 (0) | 2024.09.19 |
---|---|
TIL - 2024/09/13 (0) | 2024.09.13 |
TIL - 2024/09/11 (0) | 2024.09.11 |
TIL - 2024/09/10 (0) | 2024.09.10 |
TIL - 2024/09/09 (0) | 2024.09.09 |