ORM(object-relational mapping)은 자바의 객체와 데이터베이스를 연결하는 프로그래밍 기법입니다. 예를 들어, RDBMS에 name과 grade라는 컬럼에 각각 '고길동'과 '3'이라는 값이 들어있다고 생각해봅시다. 이 값을 자바 코드에서 사용하려면 JDBC API를 포함한 다양한 설정과 사전 지식이 필요합니다. 또한, SQL에 대한 공부도 필수적입니다. 하지만 ORM을 사용하면 데이터베이스에 존재하는 값들을 마치 자바 객체처럼 사용할 수 있습니다. 쉽게 말해, SQL을 전혀 몰라도 자바 언어로만 데이터베이스에 접근하여 값을 받아와 사용할 수 있습니다. 즉, 객체와 데이터베이스를 자바 언어로만 다룰 수 있게 하는 기술이 바로 ORM입니다. 물론 이 기술은 자바뿐만 아니라 다양한 언어에서도 제공됩니다.
ORM 기술에 장단점
장점
- SQL을 직접 작성하지 않고 사용하는 언어로 데이터베이스에 접근할 수 있다.
- ORM을 사용하면 SQL 쿼리를 직접 작성할 필요 없이, 자바와 같은 프로그래밍 언어를 통해 데이터베이스 작업을 수행할 수 있습니다. 이는 개발 생산성을 높이고, 코드의 가독성을 향상시킵니다.
- 객체지향적으로 코드를 작성할 수 있기 때문에 비즈니스 로직에만 집중할 수 있다.
- ORM은 데이터베이스 작업을 객체지향 프로그래밍(OOP) 방식으로 처리할 수 있게 해주므로, 개발자는 비즈니스 로직에만 집중할 수 있습니다. 데이터베이스 작업이 애플리케이션의 다른 부분과 자연스럽게 통합됩니다.
- 데이터베이스 시스템이 추상화되어 있기 때문에 방언(MySQL, Oracle 등) 전환을 한다고 해도 추가 작업이 거의 없다.
- ORM은 데이터베이스 독립성을 제공하여, MySQL, Oracle 등과 같은 다른 데이터베이스로 변경할 때 추가 작업이 최소화됩니다. 이는 데이터베이스 간에 이식성을 높여줍니다.
- 매핑하는 정보가 명확하기 때문에 ERD에 대한 의존도를 낮출 수 있고 유지보수에 유리한 점이 많다.
- ORM은 클래스와 테이블 간의 매핑 정보를 명확하게 정의할 수 있어, 데이터베이스의 ERD(엔터티 관계 다이어그램)에 대한 의존도를 낮추고, 코드 변경에 유연하게 대응할 수 있습니다.
단점
- 프로젝트의 복잡성이 커질수록 사용 난이도가 올라간다.
- 프로젝트가 복잡해질수록 ORM 설정과 사용이 어려워질 수 있습니다. 특히, 복잡한 데이터 모델링과 성능 튜닝이 필요할 때 ORM의 사용이 복잡해집니다.
- 복잡하고 무거운 쿼리는 ORM으로 해결이 불가능한 경우가 많다.
- ORM은 단순한 CRUD 작업에는 적합하지만, 복잡한 조인이나 성능이 중요한 쿼리에는 한계가 있을 수 있습니다. 이러한 경우, 직접 SQL을 작성하는 것이 더 효율적일 수 있습니다.
모델 클래스에서 어노테이션 사용 예시
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
// 기본 생성자
public User() {}
// 생성자
public User(String name, String email) {
this.name = name;
this.email = email;
}
}
'Spring boot > 개념 공부' 카테고리의 다른 글
엔티티 매니저에 대해 알아보자. (1) | 2024.10.01 |
---|---|
JPA와 하이버네이트란? (0) | 2024.10.01 |
DELETE 방식에 이해 및 실습 (1) | 2024.09.27 |
PUT 방식에 이해 및 실 (0) | 2024.09.27 |
전략 패턴 (1) | 2024.09.27 |