객체와 관계형 데이터베이스 간의 데이터 매핑을 자동화 하는 기술입니다. 객체 지향 프로그래밍에서 사용하는 클래스와 관계형 데이터베이스에서 사용하는 테이블 간의 매핑을 쉽게 구현할 수 있습니다. 해당 기술을 사용하여 개발자는 객체 지향적 코드를 작성하면서 데이터베이스를 보다 용이하게 다룰 수 있습니다.
1. 생산성 향상
SQL 질의문을 직접 작성하지 않아도 되므로 생산성 향상을 기대할 수 있습니다.
2. 유지보수성 향상
객체와 테이블간의 매핑을 한 곳에서 관리할 수 있어서 유지보수성 향상 됩니다.
3. 데이터베이스 이식성 향상
ORM을 사용하면 데이터베이스 종류에 따라 상관없이 객체 지향적 코드를 작성할 수 있어 데이터베이스 이식샹 항상을 기대할 수 있습니다.
1. 성능 저하
객체와 데이터베이스 간의 변환 작업이 필요하여 성능 저하가 발생 할 수 있습니다.
2. 쿼리 최적화의 어려움
ORM를 사용하며 직접 SQL문을 작성할 수 없기 때문에 쿼리 최적화에 어려움이 있을 수 있습니다.
이러한 단점들이 존재하여 올바른 시스템 적용 및 성능 저하 최소화, 쿼리 최적화에 노력해야 합니다.
1. 적절한 데이터베이스 스키마 설계
2. 지연 로딩
필요한 데이터가 사용될 때 까지 데이터를 로딩하지 않는 지연 로딩 기능을 사요하면 불필요한 데이터를 로딩하지 않아도 되므로 성능 향상을 기대할 수 있습니다.
3. 캐싱
ORM에서 캐싱 기능을 제공하므로 자주 사용되는 데이터 및 쿼리 결과를 캐시에 저장하면 성능 향상을 기대할 수 있습니다.
4. context 관리
불필요한 객체가 저장되지 않은 영속성 context가 저장되어 있으면 쿼리 횟수가 늘어나 관리가 필요합니다.