JDBC(Java Database Connectivity)
- 자바에서 데이터베이스와 통신하기 위한 표준 인터페이스 제공
- connection 객체가 db와 app의 연결을 관리하고,
- preparedstatement가 sql을 전달하며,
- resultset 객체를 통해 결과값을 전달한다
JPA(Java Persistence API)
- ORM : 객체 지향 프로그래밍과 관계형 데이터베이스 간 매핑을 지원하는 기술
- JPA는 자바에서 ORM을 사용하기 위한 표준 인터페이스
- JPA는 내부적으로 JDBC를 사용하여 데이터베이스와 통신
- JPA를 사용하면 JDBC보다 더 추상화된 수준에서 DB와 상호 작용할 수 있으므로 데이터베이스에 대한 지식을 적게 요구
JPA를 사용하는 이유
- 생산성 향상
- 개발자가 객체 지향적으로 데이터를 다룰 수 있게 해준다.
- SQL 쿼리를 작성하지 않아도 데이터베이스 작업을 수행하게 해준다.
- 재사용성 향상
- 객체를 데이터베이스에 저장하거나 불러올 때 일일이 SQL쿼리를 작성하지 않아도 된다.
- 이렇게 작성된 JPA코드를 다르 프로젝트에서도 재사용이 가능하다.
- 데이터베이스 독립성
- JPA는 데이터베이스와 직접적으로 상호작용하지 않으며, ORM을 사용하여 데이터베이스와 매핑하므로, 데이터베이스를 변경하더라도 애플리케이션 코드를 수정할 필요가 없다.
JPA의 단점
- 성능 이슈
- ORM이 데이터베이스와의 매핑 작업을 수행하므로 일반적인 JDBC보다 성능이 떨어질 수 있다.
- 내부적으로 SQL 쿼리를 작성하므로 개발자가 직접 짠 쿼리보다 성능이 저하될 수 있다.
- 복잡성
- JPA는 ORM을 사용하므로, 객체와 DB간 매핑 규칙을 이해하고 적용해야 한다.
JPA를 언제 적용해야 하는가?
- 복잡한 DB 스키마를 다룰 때
- 객체 지향 모델링을 통해 개발자가 데이터베이스 스키마를 이해하고 다루기 쉽게 할 수 있다.
- 개발 생산성이 중요할 때
- 개발자가 데이터베이스와 연동하고 쿼리문을 작성하는 과정에 신경쓰지 않고 개발에 집중 가능
- 데이터베이스 독립성이 필요할 때
- JPA는 ORM을 사용하여 데이터베이스와 매핑하기 때문에, 데이터베이스 독립성을 보장할 수 있다. 데이터베이스 변경에 대한 걱정을 덜 수 있다.
JPA를 언제 피해야 하는가?
- 성능이 매우 중요할 때
- ORM기술을 사용하면 일반적으로 JDBC보다 성능이 떨어질 수 있다. 내부적으로 생성되는 SQL쿼리가 개발자가 직접 작성하는 쿼리보다 성능이 떨어질 수 있다.
- 특정 DB 기술을 사용할 때
- JPA는 ORM 기술을 사용하므로 모든 데이터 베이스 기능을 지원하지 않을 수 있다.
- ORM 기술에 대한 이해가 부족할 때
- 객체와 데이터베이스 간 매핑 규칙을 이해하고 있어야 한다.