2015-09-26 2 views
0

Я работаю над несколькими базами данных, такими как сервер MSSQL и PostgreSQL, с тяжелыми транзакциями и сложными запросами. Я искал, что простой jdbc быстрее, чем ORM. Я думал об использовании ORM, потому что я не хочу писать разные запросы для разных баз данных для одной и той же работы, а также для стандартизации моего уровня dao. Я сопоставляю таблицы базы данных без использования внешних ключей, а для ORM, таких как apache cayenne, мне приходится сопоставлять таблицы с ограничениями внешнего ключа, поэтому я могу использовать мои соединения или любые другие операции с несколькими таблицами. Хорошо ли использовать и ORM или простой jdbc в порядке.Что лучше ORM (Apache Cayenne), JDBC или SpringJDBC?

ответ

0

Из вашей проблемы dscription у вас уже есть понимание компромиссов. Так что это действительно решение, которое вам нужно сделать для себя на основе этих компромиссов.

Моим единственным советом здесь будет второй взгляд на требования к производительности. Хотя ORM вводит накладные расходы на создание, хранение и управление объектами, во всех случаях, кроме нескольких случаев, вы можете смело игнорировать эти накладные расходы ради лучшей абстракции. Кроме того, при работе с JDBC очень часто вы создаете свой собственный код для преобразования ResultSet в объекты, которые будут сталкиваться со своими собственными накладными расходами. Таким образом, вы, возможно, не получите более быстрый код, потеряв все преимущества чистой объектной модели и структуры, которая ее управляет.

Так что я предпочитаю лучше абстрагироваться (в этом случае ORM), а затем использовать средства инфраструктуры для оптимизации производительности. Например. ускорить обработку больших ResultSets Cayenne provides a few techniques: результат итераторы, DataRow запросы, запросы разбитым на страницы и т.д.

С другой стороны, я бы использовать JDBC или что-то вроде MyBatis, когда это не представляется возможным чисто моделировать данные как объекты. Например. когда нет естественных отношений, все доступ происходит через хранимые процедуры и т. д. Однако это не похоже на ваш случай.

Смежные вопросы