Использование Hibernate Java Persistence. Part 2. Для студентов старших курсов университетов Ст.преподаватель Дудник О.А.
Query with Hibernate Библиотека Hibernate предлагает три вида запросов к БД: Библиотека Hibernate предлагает три вида запросов к БД: Criteria HQL SQL
Запросы с использованием Criteria Объект Criteria создается с помощью метода createCriteria экземпляра класса Session:
Criteria //создаем критерий запроса Criteria crit = session.createCriteria(Student.class); //ограничиваем число результатов crit.setMaxResults(50); //помещаем результаты в список List studs = crit.list();
List studs = session.createCriteria(Student.class).add( Expression.like("name", "Ivanov%") ).add( Expression.between("age", 18, 25) ).list(); List studs = session.createCriteria(Student.class).add( Expression.like("name", "_van%") ).add( Expression.or( Expression.eq( "age", new Integer(20) ), Expression.isNull("age") ) ).list(); List studs = session.createCriteria(Student.class).add( Expression.in( "name", new String[] { "Ivanov Ivan", "Petrov Petia", "Zubin Egor" } ) ).add( Expression.disjunction().add( Expression.isNull("age") ).add( Expression.eq("age", new Integer(20) ) ).add( Expression.eq("age", new Integer(21) ) ).add( Expression.eq("age", new Integer(22) ) ) ) ).list()
Expression.like указывает шаблон, где _ любой один символ, % любое количество символов Expression.like указывает шаблон, где _ любой один символ, % любое количество символов Expression.isNull значение поля равно NULL. Expression.between age имя поля, 18 минимальное значение указанного поля, 25 его максимальное значение Expression.in указывает диапазон значений конкретного поля Expression.disjunction, Expression.or дизъюнкция (OR) объединяет в себе несколько других выражений оператором ИЛИ. Expression.eq определяет равенство поля какому-то значению.
Criteria Результаты также можно отсортировать: List studs = sess.createCriteria(Student.class).add( Expression.like("name", "Iv%").addOrder( Order.asc("name") )//по возрастанию.addOrder( Order.desc("age") )//по убыванию.list();
Запросы с использованием SQL session.createSQLQuery("select * from Student").addEntity(Student.class).list(); session.createSQLQuery("select id, name, age from Student").addEntity(Student.class).list(); Query query = session.createSQLQuery("select * from Student where name like ?").addEntity(Student.class); List result = query.setString(0, "Ivan%").list(); query = session.createSQLQuery("select * from Student where name like :name").addEntity(Student.class); query = session.createSQLQuery("select * from Student where name like :name").addEntity(Student.class); List result = query.setString("name", "Ivan%").list();
Запросы с использованием HQL HQL(The Hibernate Query Language Язык запросов Hibernate), который во многом похож на язык SQL, с той разницей, что является полностью объектно- ориентированным.
Запросы с использованием HQL HQL(The Hibernate Query Language Язык запросов Hibernate), который во многом похож на язык SQL, с той разницей, что является полностью объектно- ориентированным. For example: List studs = (List )session.createQuery("from Student order by name").list();
Запросы с использованием HQL List names = (List )session.createQuery("select stud.name from Student stud order by name").list();