ORM은 Object-Relational Mapping의 약자로, 객체와 관계형 데이터베이스를 연결해주는 도구 또는 기법입니다. 한마디로, 우리가 작성한 객체 지향 프로그래밍 언어의 코드와 데이터베이스의 데이터를 자동으로 매핑해 주는 역할을 이예요!
우리가 Java로 개발하면서 아래와 같은 클래스를 만들었다고 가정해 볼게요.
public class User {
private Long id;
private String name;
private String email;
// getters and setters
}
그리고 이 클래스와 연결된 데이터베이스 테이블이 아래와 같다면,
CREATE TABLE User (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
email VARCHAR(255)
);
ORM은 이 두 가지를 자동으로 연결해줘요. 개발자가 SQL 쿼리를 일일이 작성하지 않아도, 객체를 통해 데이터베이스 작업(CRUD: Create, Read, Update, Delete)을 수행할 수 있게 해준답니다!
생산성 향상: ORM을 사용하면 SQL 문을 작성하는 데 드는 시간을 줄일 수 있어요. 코드가 간결해지고 유지보수가 쉬워져요.
객체 지향 프로그래밍과의 호환성: 체 지향 프로그래밍의 원칙을 따르면서 데이터베이스를 쉽게 다룰 수 있어요. 예를 들어, 클래스 간의 관계를 그대로 데이터베이스에 반영할 수 있어요!
유지보수 용이: 코드와 데이터베이스 간의 매핑이 명확해지기 때문에, 데이터베이스 구조가 변경되더라도 쉽게 수정할 수 있어요.
학습 곡선 처음 접하는 사람에게는 이해하고 사용하는 데 시간이 걸릴 수 있어요. 특히 복잡한 쿼리가 필요한 경우 ORM 사용이 오히려 비효율적일 수 있어요.(Querydsl 사용)
성능 문제 ORM이 자동으로 생성하는 쿼리가 항상 최적화되어 있지는 않습니다. 복잡한 작업에서는 직접 SQL을 작성하는 것이 더 효율적일 수 있어요.