2012-01-18 2 views
0

Я хочу использовать объект запроса в HibernateTemplate. Мы можем использовать этот объект Query с HibernateTemplate, но это было устарело весной.Как мы можем объект запроса в hibernateTemplate

Если какой-либо один с помощью другого способа Пожалуйста направьте меня

Спасибо заранее

Дхармендра

+1

может Могли бы вы поделиться ссылкой на Javadoc Устаревшей метода вы хотите использовать , Я только нашел saveOrUpdateAll в javadoc весны 3.1, чтобы быть устаревшим. –

+0

Для полноты: http://stackoverflow.com/questions/5104765/hibernatedaosupport-is-not-recommended-why –

ответ

1

Вы можете использовать либо чистый SQL или вы можете сделать это, написав упрощенные запросы, как:

Session session = sessionFactory.getCurrentSession(); 

Query query = session.createQuery("FROM TableName where id=:userId"); 
query.setString("userId", userId); //userId is of string type Or you can use userId+"" to convert it to string 

List<myEntityPOJOName> result = query.list(); //this will return a list of myEntityPOJOName objects 

Или вы можете написать чистый sql внутри функции createQuery(), как показано ниже:

Session session = sessionFactory.getCurrentSession(); 
Query query = session.createQuery("delete from TableName myEntityPOJOName where id=:userId and hId=:hospitalID"); 
query.setString("userId",myUserID); 
query.setString("hospitalID", myHospID); 
int row = query.executeUpdate(); //returns a number of updated rows 

Для Hibernate реализованы такие функции, как saveOrUpdate(), сохранить() и т.д. вы посмотрите на Hibernate документы на http://www.hibernate.org/docs

+0

Спасибо. Мы можем сделать это, но я хочу, чтобы в HibernateTemplate была использована любая альтернатива. Мы используем Spring и hibernate – dharmendra

+0

HibernateTemplate использует только связанные соединения, сеансы и т. Д., Но неважно, используете ли вы hibernateTemplate или SessionFactory для обработки сеанса, запросы остаются неизменными. Таким образом, для вашего проекта, если вы использовали hibernateTemplate, он будет создавать сеансы для вас, и вам просто нужно получить текущий сеанс (или создать новый) для выполнения любых операций, связанных с db. И еще одна вещь, поскольку я знаю, используя hibernateTemplate не является предпочтительным в последней версии спящего режима, вместо этого вы можете напрямую вставлять sessionFactory в свой класс DAO –

+0

(продолжение предыдущего комментария) ... без расширения HibernateDaoSupport. Вот ссылка на справочный документ Hibernate, где он говорит то же самое: «ПРИМЕЧАНИЕ. С Hibernate 3.0.1 транзакционный код доступа Hibernate также может быть закодирован в обычном стиле спящего режима. Следовательно, для недавно начатых проектов подумайте о принятии стандартного стиля Hibernate3 вместо этого, вместо этого, на основе SessionFactory.getCurrentSession(). http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/orm/hibernate3/HibernateTemplate.html –

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