JDBC보다 JPA를 써야 하는 이유

Gihongg·2024년 3월 30일

Spring Boot

목록 보기
14/24

JDBC란 무엇일까

JDBC란 Java로 데이터베이스 프로그래밍을 하기위한 라이브러리다.

아래의 코드처럼 자바로 로우한 쿼리문을 직접 사용하는 것이다.

장점은 날 것의 로우한 쿼리를 작성할 수 있다.
단점은 매번 로드를 해줘야 하고, 어디서 에러가 나올지 몰라 위험성이 높다. 예외 케이스를 매우많이 작성해야한다 등등

	
    String jdbcDriver = "com.mysql.cj.jdbc.Driver";
	String jdbcUrl = "jdbc:mysql://localhost:3306/user?serverTimezone=Asia/Seoul";
	
    try {
		Class.forName(jdbcDriver).newInstance);
		Connection con = DriverManager.getConnection(jdbcUrl, "root", "root123!@#*);
		Statement st = con.createStatement);
		String sql = "SELECT * FROM user";
		ResultSet rs = st. executeQuery(sql):
	
    while(rs.next)){
		String name = rs.getString(1);
		String age = rs.getString(2);
		String email = rs.getString(3);
		System.out.printin(name +" " + age
		email);
	}
	
    rs.close();
	st.close();
	con.close();
	} catch (Exception e) {
		e.printStackTrace):
	}
    

이렇듯 JDBC는 반복되고 힘든 방식이다.

그래서! 사람들은 JPA를 만들었다.


JPA

JPA란 Java ORM(Object Relational Mapping) 기술에 대한 인터페이스다.

즉 ORM이란 객체와 데이터베이스의 관계를 매핑하는 방법이다.

위와 같이 Java의 객체를 데이터베이스의 객체와 동일하게 만들어 입출력시에 사용하는 것이다.

JPA 동작 과정 상세 설명

JPA는 자바 애플리케이션에서 데이터베이스 작업을 추상화하여 개발자가 객체 지향적으로 데이터를 관리할 수 있게 해주는 기술이다. 여기서는 JPA의 저장 과정과 조회 과정을 좀 더 자세히 살펴보자.


저장 과정 상세

엔티티 상태 변화 감지: 개발자가 엔티티 객체의 상태를 변경하면, JPA는 영속성 컨텍스트에서 이를 감지한다. 영속성 컨텍스트는 트랜잭션 단위에서만 작동한다.

SQL 생성

변경된 엔티티에 대해 적절한 INSERT SQL을 생성한다.

JDBC API 사용

생성된 SQL을 데이터베이스에 전송하기 위해 JDBC API를 사용한다.

데이터베이스 반영

JDBC를 통해 전송된 SQL이 데이터베이스에 반영되어 데이터가 저장된다.


조회 과정 상세

조회 요청

개발자가 특정 엔티티의 조회를 요청한다. 이때, 엔티티의 기본 키 값을 사용하여 조회를 진행한다.

SQL 생성

JPA는 엔티티의 매핑 정보를 바탕으로 적절한 SELECT SQL을 생성한다.

JDBC API 사용

생성된 SQL을 데이터베이스에 전송하기 위해 JDBC API를 사용한다.

데이터베이스로부터 반환

데이터베이스로부터 반환된 데이터를 받아 JPA는 이를 엔티티 객체에 매핑하여 결과를 반환한다.


JPA의 동작 과정은 크게 이렇게 요약할 수 있다. 저장 과정에서는 엔티티의 상태 변화를 감지하여 적절한 SQL을 생성하고, 이를 데이터베이스에 반영한다. 조회 과정에서는 요청받은 엔티티를 찾기 위해 SQL을 생성하고, 데이터베이스로부터 결과를 받아 객체에 매핑한다. 이 과정들을 통해 개발자는 객체 지향적인 방식으로 데이터베이스를 다룰 수 있게 되며, 복잡한 SQL 작성 없이도 데이터베이스 작업을 수행할 수 있다.

그럼 JDBC는 세상에 없는가?

는 아니다. 어찌됐던 쿼리문이 어딘가엔 있어야 되기 때문에 깊숙한 곳으로 자취를 감추었을 뿐이다.

데이터베이스와 가장 밀접하게 닿아있는 부분이 JDBC이고, 그 위를 라이브러리들이 덮고, 그 위에 JPA, 그리고 그 위를 Spring Data JPA가 덮고 있어 우리는 쉽게 사용할 수 있는 것이다.

profile
전천후 개발자

0개의 댓글