Я работаю над несколькими базами данных, такими как сервер MSSQL и PostgreSQL, с тяжелыми транзакциями и сложными запросами. Я искал, что простой jdbc быстрее, чем ORM. Я думал об использовании ORM, потому что я не хочу писать разные запросы для разных баз данных для одной и той же работы, а также для стандартизации моего уровня dao. Я сопоставляю таблицы базы данных без использования внешних ключей, а для ORM, таких как apache cayenne, мне приходится сопоставлять таблицы с ограничениями внешнего ключа, поэтому я могу использовать мои соединения или любые другие операции с несколькими таблицами. Хорошо ли использовать и ORM или простой jdbc в порядке.Что лучше ORM (Apache Cayenne), JDBC или SpringJDBC?
ответ
Из вашей проблемы dscription у вас уже есть понимание компромиссов. Так что это действительно решение, которое вам нужно сделать для себя на основе этих компромиссов.
Моим единственным советом здесь будет второй взгляд на требования к производительности. Хотя ORM вводит накладные расходы на создание, хранение и управление объектами, во всех случаях, кроме нескольких случаев, вы можете смело игнорировать эти накладные расходы ради лучшей абстракции. Кроме того, при работе с JDBC очень часто вы создаете свой собственный код для преобразования ResultSet в объекты, которые будут сталкиваться со своими собственными накладными расходами. Таким образом, вы, возможно, не получите более быстрый код, потеряв все преимущества чистой объектной модели и структуры, которая ее управляет.
Так что я предпочитаю лучше абстрагироваться (в этом случае ORM), а затем использовать средства инфраструктуры для оптимизации производительности. Например. ускорить обработку больших ResultSets Cayenne provides a few techniques: результат итераторы, DataRow запросы, запросы разбитым на страницы и т.д.
С другой стороны, я бы использовать JDBC или что-то вроде MyBatis, когда это не представляется возможным чисто моделировать данные как объекты. Например. когда нет естественных отношений, все доступ происходит через хранимые процедуры и т. д. Однако это не похоже на ваш случай.
- 1. Apache Cayenne 1-M отношения в пределах одного стола
- 2. Пользовательский конструктор: Apache Cayenne 3.2M
- 3. Apache Cayenne: пользовательские таблицы: примеры?
- 4. Apache Cayenne Get Collection Expression
- 5. Apache Cayenne: NullPointerException when commitChanges
- 6. Что такое статус поддержки JPA в apache-cayenne?
- 7. O (n log m) vs O (n + m) - что лучше?
- 8. Получение нового объекта данных в Apache Cayenne
- 9. Apache Cayenne: Обработка типов перечислений PostGreSQL
- 10. Связывание Apache Cayenne many-to-many
- 11. Apache Cayenne: поставляющая динамически определение проекта
- 12. портирования Apache Cayenne от оракула к PostGreSQL
- 13. Что лучше для поиска Apache solr или Elastic?
- 14. для реализации OData-сервисов, что лучше Apache Olingo или OData4j?
- 15. Что лучше: date() или DateTime :: format()?
- 16. Что лучше Struts или Spring и почему?
- 17. Что лучше? city.state.id или city.state_id
- 18. Что лучше .txt или .xml
- 19. Что лучше, Nagios или Sensu?
- 20. UDID или IMEI - что лучше?
- 21. Что лучше, ConfigObj или ConfigParser?
- 22. '__doPostBack' ИЛИ '.click()' Что лучше?
- 23. Magento или Prestashop, что лучше?
- 24. Html.fromHtml или Spannable, что лучше?
- 25. JSON или XML? Что лучше?
- 26. Что лучше QTP или Jmeter?
- 27. Что лучше, isset или нет?
- 28. Что лучше 'parent()' или 'parents()'?
- 29. Что лучше скрепки или CarrierWave?
- 30. Что лучше: PooledConnectionFactory или CachingConnectionFactory?