햄발
Blog 프로젝트 만들기(JPA) - 스프링 부트 DB 접근 기술 ORM 본문
ORM (Object-Relational-Mapping)
자바의 객체와 데이터 베이스를 연결하는 프로그래밍 기법입니다.
예를 들어, RDBMS 에 name 과 grade 라는 컬럼에 각각 '고길동' 과 '3' 이라는 값이 들어있다고 생각해봅시다!
이 값을 자바코드에서 사용하기 위해선, JDBC API 를 포함한 다양한 설정과 사전지식이 필요합니다.
또한 , SQL 에 대한 공부도 필수적입니다.
하지만 ORM 을 사용한다면 데이터 베이스에 존재하는 값들을 마치 자바객체처럼 사용할수 있습니다 !
곧, SQL 을 전혀 몰라고 자바 언어로만 데이터베이스에 접근하여 값을 받아와 사용할수 있다는것입니다.
즉, 객체와 데이터 베이스를 자바언어로만 다룰수 있게 하는 기술이 바로 ORM 입니다.
물론 이 기술은 자바뿐만 아닌 , 다양한 언어에서도 제공됩니다.
ORM 기술의 장단점
장점
- SQL 을 직접 작성하지않고 사용하는 언어로 데이터 베이스에 접근 가능하다.
- ORM 을 사용하면 SQL 쿼리문을 직접 작성할 필요없이 , 자바와 같은 프로그래밍 언어를 통해 데이터베이스 작업을 수행할 수 있습니다. 이는 개발 생산성을 높이고 코드의 가독성을 향상시킵니다.
- 객체 지향적으로 코드를 작성할 수 있기 때문에 비즈니스 로직에만 집중할 수 있다.
- ORM 은 데이터베이스 작업을 객체지향 프로그래밍(OOP) 방식으로 처리가능하게 해줘서, 개발자는 비즈니스 로직에만 집중할 수 있습니다. 데이터베이스 작업이 애플리케이션의 다른부분과 자연스럽게 통합됩니다.
- 데이터 베이스 시스템이 추상화 되어있기에 방언(MySQL , Oracle ..etc) 전환을 한다고 해도 추가 작업이 거의 없다.
- ORM 은 데이터 베이스의 독립성을 제공하며, MySQL , Oracle 등과 같은 다른 데이터베이스로 변경할때 추가 작업이 최소화 됩니다. 이는 데이터베이스간 이식성을 높여줍니다.
- 맵핑하는 정보가 명확하기에 ERD 에대한 의존도를 낮출 수 있고, 유지보수에 유리한 점이 많다.
- ORM 은 클래스와 테이블간의 맵핑정보를 명확하게 정의 가능하여, 데이터베이스의 ERD(엔티티 관계다이어그램) 에 대한 의존도를 낮추고, 코드 변경에 유연하게 대응 가능합니다.
단점
- 프로젝트의 복잡성이 커질수록 사용 난이도가 올라간다.
- 프로젝트가 복잡해질수록 ORM 설정과 사용이 어려워질수 있습니다.
- 복잡한 데이터 모델링과 성능 튜닝이 필요할때 ORM 사용이 복잡해집니다.
- 복잡하고 무거운 쿼리는 ORM 으로 해결이 불가능한 경우가 높다!
- ORM 은 단순한 CRUD 작업에는 적합하다. 하지만 복잡한 JOIN이나 성능이 중요한 쿼리문에는 한계가 있을수있습니다. 이러한 경우엔, 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' 카테고리의 다른 글
Blog 프로젝트 만들기(JPA) - 엔티티 매니저 (0) | 2024.10.01 |
---|---|
Blog 프로젝트 만들기(JPA) - JPA 와 하이버네이트 (2) | 2024.09.30 |
Blog 프로젝트 만들기(JPA) - DELETE 방식에 이해 및 실습 (0) | 2024.09.28 |
Blog 프로젝트 만들기(JPA) - PUT 방식에 이해 및 실습 (0) | 2024.09.28 |
Spring Boot Blog 프로젝트 만들기(JPA) - POST 방식에 이해 및 실습 (0) | 2024.09.28 |