Hibernate: получение списков - PullRequest
       8

Hibernate: получение списков

1 голос
/ 16 августа 2010

Я новичок в спящем режиме. Мои намерения очень просты: я сопоставил объекты в одну таблицу с аннотациями. Теперь я хочу получить их в виде списка объектов для их отображения. Позже я хочу реализовать простые фильтры.

Нужно ли писать SQL-запросы? или это какой-то метод, основанный на аннотациях?


Вариант 1: см. Решение Рупешита!

Один вопрос для этого: какой список мне следует использовать? спящий или утильный?


Это тоже возможно ?: ссылка

Ответы [ 3 ]

3 голосов
/ 16 августа 2010

Что ж, если вы хотите получить список сущностей, соответствующих некоторым условиям, вам нужно как-то выполнить запрос.Hibernate предлагает несколько способов сделать это:

Вариант 1: Использование языка запросов Hibernate.HQL близок к SQL за исключением того, что вы работаете с объектами и ассоциациями, а не с таблицами.HQL также переносим (SQL генерируется в зависимости от диалекта).Это традиционный путь.

Query q = session.createQuery("from foo Foo as foo where foo.name=:name");
q.setParameter("name", "bar"); 
List foos = q.list();

Вариант 2: Использование Criteria API.При использовании Criteria API вы пишете запросы с использованием объектно-ориентированного API.Этот API особенно хорош для динамических запросов.Запросы критериев также переносимы.

List cats = session.createCriteria(Cat.class)
    .add( Restrictions.like("name", "Fritz%") )
    .add( Restrictions.between("weight", minWeight, maxWeight) )
    .list();

Опция 3: Использование собственных запросов SQL.Обычно вы используете собственный SQL, только если вы хотите использовать специфичные для базы данных функции.

List cats = session.createSQLQuery("SELECT * FROM CATS").addEntity(Cat.class);

Я бы, вероятно, использовал HQL в вашем случае. Глава 14. HQL: язык запросов Hibernate

Глава 15. Критерии запросов Глава 16. Собственный SQL
1 голос
/ 16 августа 2010

Вы можете сделать это следующим образом .... Сначала создайте объект сеанса ...... Затем

 List<DomainClass> domainClass = session.createQuery("from DomainClass e where e.Id=23").list();

Таким образом, вы получите список объектов типа вашего домена.

0 голосов
/ 16 августа 2010

Лучшее, что вы можете сделать, чтобы начать работать с Hibernate (или вообще с новыми Frameworks), - это найти учебники, чтобы узнать обо всех основах.Существует множество обучающих программ для начинающих, например, сайт документации от hibernate.Этот урок в порядке, хотя в нем есть небольшие ошибки, но при небольшом поиске вы даже найдете лучшие, которые соответствуют вашим потребностям.

Чтобы ответить на ваш вопрос: вы обычно пишете HQL-ордера (которыев основном почти такой же, как SQL, просто вместо этого работает с объектами домена) для получения данных, которые вы хотите.

Пример из Rupeshit может быть немного запутанным, поскольку (если я правильно понял) список будетвсегда просто иметь одну запись, так как Id должен быть первичным ключом из domainClass, поэтому всегда будет только одно совпадение, но вы получите полное представление об этом.

EDIT: Для списков результатов вы обычно всегда используетеUtil-листы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...