ORM과 SQL 프로그래밍 사이의 겉으로보기에 영원한 투쟁에서 질문이옵니다. 둘 다 사용하지 않는 이유는 무엇입니까? 대부분의 프로그래밍에서 ORM을 사용하고 선택한 ORM이 수행 할 수없는 복잡한 JOIN 쿼리 및 기타 복잡한 쿼리에 대한 자체 SQL 쿼리를 프로그래밍합니다. 그렇지 않은 이유가 있습니까?왜 ORM과 SQL을 모두 사용하지 않습니까?
답변
대부분의 ORM 솔루션은 원시 SQL을 지원합니다. Hibernate.
두 가지를 결합하지 않는 이유는 일관성 중 하나입니다. 데이터베이스에서 데이터를 검색하고이를 응용 프로그램의 객체로 변환하는 두 가지 방법을 이해해야한다면 기억하는 양이 두 배가되고 기회는 두 배가됩니다 (데이터베이스에 연결하고 데이터를 검색하는 코드의 경우) 테스트를 두 번 수행해야합니다.
ORM에 익숙하지 않은 개발자는 원시 SQL을 사용하는 경향이 있으며 ORM 도구를 사용하는 개발자는 ORM 계층을 사용하여 거의 모든 것을 처리합니다. 그러면 코드베이스를 유지 관리하고 확장하기가 어려워집니다 .
이 작업을 수행하려는 경우 최소한 "일관성을 유지할 수있는 JDBC (또는 무엇이든)"규칙을 통해 직접적으로 SQL을 ORM 도구를 통해 시행해야합니다. 많은 객체 매핑 기능을 다시 사용하십시오.
하지만 솔루션을 골라 내고 다니는 것이 이상적입니다. 베팅을 헤징하는 것은 거의 무료가 아닙니다.
ORM에서 생성 된 대부분의 SQL은 최적화되지 않았습니다.
성능이 중요한 경우 바인딩에만 ORM을 사용하고 모든 쿼리에 사용자 정의 SQL을 사용하는 것이 좋습니다.
나는 어떤 이유도 언급하지 않고 ORM-tools 제작자가 두 가지를 결합하지 않는 것이 좋습니다. 그러나, 내가 그것을 google 할 때, 나는 그것에 거의 아무것도 발견하지 않는다. –
- 1. 왜 XMLHttpRequest를 사용하지 않습니까?
- 2. 프로그램이 CPU를 모두 사용하지 않습니까?
- 3. 왜 OrderedDict는 super를 사용하지 않습니까?
- 4. 왜 clang을 더 사용하지 않습니까?
- 5. 왜 누구도 INotifyPropertyChanging을 사용하지 않습니까?
- 6. 왜 PHP에서 exec()를 사용하지 않습니까?
- 7. 왜 facebook은 og : title 태그를 사용하지 않습니까?
- 8. 왜 내 코드가 frame.add를 모두 표시하지 않습니까?
- 9. 왜 두 tar.gz 파일을 모두 확장하지 않습니까?
- 10. 왜 이러한 URL 형식을 사용하지 않습니까?
- 11. 왜 ListBox DataTemplate이 Windows.Resources 스타일을 사용하지 않습니까?
- 12. 왜 내 postgresql보기에서 색인을 사용하지 않습니까?
- 13. Rspec 스텁 왜 전혀 사용하지 않습니까
- 14. 왜 onClick 정품 인증 기능을 사용하지 않습니까?
- 15. 우리는 왜 cout에 형식 지정자를 사용하지 않습니까?
- 16. 왜 읽기 전용 블록을 사용하지 않습니까?
- 17. 왜 MFC :: CHttpFile 'PUT'을 사용하지 않습니까?
- 18. 왜 SaveAs가 올바른 PixelsPerInch 매크로를 사용하지 않습니까?
- 19. 왜 gprolog는 modus ponens를 함께 사용하지 않습니까?
- 20. 왜 SKIA는 사용자 정의 FilterInputStream을 사용하지 않습니까?
- 21. 왜 자바에서 포인터 개념을 사용하지 않습니까?
- 22. 왜 이미지 보드 스크립트가 데이터베이스를 사용하지 않습니까?
- 23. 왜 gridview 셀을 다시 사용하지 않습니까?
- 24. 왜 개발자는`install` 명령을 사용하지 않습니까?
- 25. 왜 GCC는 strict 모드에서 builtins를 사용하지 않습니까?
- 26. 왜 std :: vector는 오프셋을 사용하지 않습니까?
- 27. 왜 Warden은 모든 기본 전략을 사용하지 않습니까?
- 28. 안드로이드는 dp를 왜 사용하지 않습니까? cm, mm
- 29. 왜 PyCrypto는 기본 IV를 사용하지 않습니까?
- 30. 왜 jQuery를 사용하지 않고 javascript 자체 실행 함수를 사용하지 않습니까?
완벽하게 잘 보이는 것, 그것이 내가하는 일입니다. – Daveo