У меня есть Java-сервер (не веб-интерфейс, больше похожий на большое многопоточное автономное приложение), который должен взаимодействовать с базой данных MS SQL Server.
Я только что работал над другим проектом, который портировал собственный уровень O / R с Oracle на SQL Server, и столкнулся с серьезными проблемами из-за слишком большого количества предположений оракула (в основном, блокировки). Итак, какой слой O / R мне следует использовать?
Обновлено: я слышал о Hibernate, но все остальное полезно! В частности, помогает ли какой-либо из этих API / фреймворков устранить специфические недостатки стратегии блокировки SQL-серверов в многопоточной среде?




Спящий режим - обычный выбор. Кроме того, вы можете взглянуть на Oracle TopLink, iBatis, все, что вам больше подходит.
Я также использовал BEA Kodo с Microsoft SQL Server (когда это был Solarmetric Kodo). В то время он был гораздо более многофункциональным, чем Hibernate и любая реализация JDO. Это уже не так, хотя он по-прежнему имеет ряд уникальных функций производительности / масштабируемости.
Hibernate - самый популярный из доступных на сегодняшний день. Мой личный фаворит - TopLink.
Ключевые стандарты, которые вы хотите найти, - это EJB3, Java Persistance API (JPA) и объекты данных Java (JDO). JPA, вероятно, является наиболее важным из них, поскольку его проще использовать и он предназначен как общий API для использования Hibernate, JDO, Toplink, EJB3 и т. д.
Я использовал Hibernate и iBATIS. Выбор одного из них зависит от ситуации.
Спящий режим:
iBATIS:
Оба они хорошо работают с SQL Server и поддерживают многопоточность.
Хотя исходная проблема больше не актуальна, этот ответ является самой прямой попыткой ответить на вопрос.
Гибернация - это хорошо. Но есть разные варианты реализации Hibernate. Я предлагаю Hibernate 3.x (3.2?) С JPA. Я также обычно использую Spring 2.5 в качестве основы для бизнес-логики. Hibernate и Spring особенно хорошо работают вместе, потому что они могут в некоторой степени разделять области разрешения имен, что уменьшает путаницу в том, как получить доступ к объектам O / R.
Я предлагаю Cayenne. Он поддерживает множество баз данных. Это тоже открытый исходный код. Но нет столько документов. Вы можете использовать кайенский перец со распорками.
Очевидно, это некромантия сейчас комментировать. Но сейчас Cayenne прошел долгий путь. Хорошая документация и очень быстрая поддержка сообщества в их списке рассылки.
Подходят ли какие-либо из них особенно к заявленным условиям? Многопоточность (с конкуренцией) и SQL Server?