ORM
ORM
대부분의 소프트웨어 프로젝트는 어느 시점에서 데이터베이스와 통신해야합니다. 일반적으로 데이터에 대한 GET 쿼리를 수행하고 필드를 업데이트하거나 레코드를 만듭니다. 과거에는 사람들이 데이터베이스와 통신하는 원시 코드를 작성하고 자신이 조작 할 데이터의 개체 또는 일부 코드 표현을 작성했습니다. 이로 인해 엄청난 양의 중복 코드가 생성됩니다.
ORM은 Object Relational Mapping을 의미합니다. ORM은 데이터베이스를 추상화합니다. 따라서 객체 지향 방식으로 데이터베이스에서 데이터를 쿼리하고 변경할 수 있도록 돕는 기술입니다. 누군가가 ORM이라는 약어를 사용할 때마다 데이터를 가져오고 조작 할 수있는 데 필요한 모든 코드를 추상화하는 라이브러리를 의미한다고 말하는 것이 타당하다고 생각합니다. ORM을 사용하면 더 이상 원시 SQL을 작성할 필요가 없습니다. ORM 라이브러리가 이를 대신합니다.
패러다임 불일치
- 상속
- 연관관계
- 동일성
장점
- SQL에 의존적인 개발에서 벗어나 개체 지향적인 프로그램을 설계하는데 도움을 준다.
- 패러다임의 불일치를 해결해준다.
- 유지보수
- 기존 SQL 중심개발: 클래스에 하나의 필드가 추가됨 -> 관련된 SQL 모두 수정해야됨
- ORM 사용: 클래스에 하나의 필드가 추가됨 -> 끝 나머지는 ORM 라이브러리가 대신 해준다.
- 코드 중복을 줄여준다.
- 반복되는 CRUD SQL 더이상 안한다.
- 데이터베이스를 추상화했기 때문에 언제든 다른 데이터베이스로 변경할 수 있다.
- MySQL을 쓰다가 PostgreSQL로 변경할 수 있다.
단점
- 일반적인 쿼리의 성능은 괜찮지만 복잡한 통계 쿼리는 직접 짜는 것이 성능면에서 낫다.
- 학습비용이 있다.
ORM 라이브러리
- Java: Hibernate
- Python: SQLAlchemy, Django ORM
- PHP: Propel, Doctrine