Search
Duplicate
📒

ORMs

: 객체 지향 패러다임을 사용하여 데이터베이스에서 데이터를 쿼리하고 조작할 수 있는 기술
: ORM 라이브러리는 데이터를 조작하는 데 필요한 코드를 캡슐화하는 선택한 언어로 작성된 완전히 일반적인 라이브러리이므로 더 이상 SQL을 사용하지 않음. 
: 사용 중인 프로그래밍 언어로 개체와 직접 상호 작용
예를 들어, 책 클래스가 있고 저자가 "Linus"인 모든 책을 검색하고자 할때 수동으로 다음과 같이 할 수 있음
book_list = new List(); sql = "SELECT book FROM library WHERE author = 'Linus'"; data = query(sql); // I over simplify ... while (row = data.next()) { book = new Book(); book.setAuthor(row.get('author'); book_list.add(book); }
Java
복사
: ORM 라이브러리를 사용하면 다음과 같이 표시
book_list = BookTable.query(author="Linus");
Java
복사
: ORM 라이브러리를 통해 자동으로 처리

장점과 단점

ORM을 사용하면 다음과 같은 이유로 많은 시간이 절약
DRY : 데이터 모델을 한 곳에만 작성하면 코드를 업데이트, 유지 관리 및 재사용하기 용이
데이터베이스 처리에서 I18N에 이르기까지 많은 작업이 자동으로 수행
MVC 코드를 작성하도록 강제하므로 결국 코드가 좀 더 깔끔해집니다.
잘못된 형식의 SQL을 작성할 필요가 없음
준비된 문이나 트랜잭션을 사용하는 것은 메서드를 호출하는 것만큼 쉽다
다음과 같은 이유로 ORM 라이브러리를 사용하는 것이 더 유연합니다.
무엇보다 프로그래밍 언어로 제공됨
DB 시스템을 추상화하므로 원할 때마다 변경 가능
모델은 애플리케이션의 나머지 부분에 약하게 바인딩되어 있으므로 변경하거나 다른 곳에서 사용 가능
데이터 상속과 같은 OOP 장점을 사용할 수 있습니다.

단점

배울 것이 아주 많다.
직접 설정해주어야 하는 부분이 많다.
일반적인 쿼리에 대해서는 성능이 괜찮지만 대규모 프로젝트에 대해 네이티브 쿼리의 성능이 더 낫다.
DB를 추상화하므로 전체적인 흐름을 잘 이해하고 있어야 한다