기술 지식 쌓아가기 📚/Backend 🍔

[DB] JPA와 ORM: 데이터베이스와의 스마트한 연결

코양이🤍 2024. 10. 8. 13:47

⭐ ORM (Object-Relational Mapping)란?

ORM(Object-Relational Mapping)은 객체 지향 프로그래밍 언어에서 객체와 관계형 데이터베이스 간의 매핑을 자동으로 처리해주는 기술입니다.

즉, 데이터베이스의 테이블과 프로그래밍 언어의 객체를 연결해 주는 역할을 합니다.

이 기술을 사용하면 SQL 쿼리를 직접 작성하지 않고도 객체를 통해 데이터베이스와 상호작용할 수 있습니다

예를들어 아래와 같은 users 테이블이 있다고 생각해봅시다.

ID Name
1 SungOne
2 SungTwo

ORM을 사용하면, 이 데이터를 아래와 같이 객체로 쉽게 표현할 수 있습니다.

public class User {
    private Long id;
    private String name;
}

이렇게 객체로 표현함으로써, 데이터베이스의 구조를 객체 지향적으로 다룰 수 있습니다.

 

⭐ JPA에서의 ORM 구현 방식

JPA(Java Persistence API)는 Java에서 ORM을 구현하기 위한 표준 API입니다.

JPA를 사용하면 객체를 조작하는 것만으로도 데이터베이스와의 상호작용을 쉽게 할 수 있습니다.

JPA는 다음과 같은 방식으로 ORM을 구현합니다.

1️⃣ 엔티티 클래스 정의

JPA에서 데이터베이스의 테이블에 매핑될 클래스를 정의합니다. 이 클래스는 @Entity 애너테이션으로 표시되며, 각 객체는 데이터베이스의 하나의 레코드에 대응됩니다.

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;
}

2️⃣ 데이터베이스와의 매핑

JPA는 엔티티 클래스를 통해 데이터베이스의 구조와 매핑합니다. 클래스의 필드는 데이터베이스 테이블의 열(column)에 대응되어, 객체와 관계형 데이터 간의 변환을 자동으로 처리합니다.

3️⃣ CRUD 작업

JPA를 사용하면 객체를 저장(persist), 조회(find), 수정(merge), 삭제(remove)하는 과정이 간편해집니다. 개발자는 SQL을 직접 작성할 필요 없이 객체를 통해 데이터베이스와 상호작용할 수 있습니다.

예를 들어, 새로운 사용자를 데이터베이스에 저장하는 과정은 다음과 같습니다.

EntityManager em = entityManagerFactory.createEntityManager();
em.getTransaction().begin();

// 새로운 사용자 객체 생성
User user = new User();
user.setName("John Doe");

// 데이터베이스에 사용자 저장
em.persist(user);

em.getTransaction().commit();
em.close();

위 코드에서 persist 메서드는 새로운 User 객체를 데이터베이스에 저장합니다. 이렇게 JPA를 활용하면, 복잡한 SQL 쿼리 없이도 객체를 통해 데이터베이스를 간편하게 다룰 수 있습니다.

 

🚩 결론

ORM은 객체 지향 프로그래밍과 관계형 데이터베이스 간의 간극을 메워주는 중요한 기술입니다.

JPA를 통해 ORM을 구현하면, 객체를 다루는 것만으로도 데이터베이스와 효율적으로 상호작용할 수 있습니다.

이로 인해 데이터 관리가 더욱 용이해지며, 코드의 가독성과 유지보수성이 향상됩니다.

이러한 이해를 바탕으로 효율적인 데이터 처리를 기대할 수 있습니다.