SlideShare a Scribd company logo
ИспользованиеИспользование
Hibernate JavaHibernate Java
PersistencePersistence..
Part 2.Part 2.
Для студентовДля студентов
старших курсов университетовстарших курсов университетов
Ст.преподаватель Дудник О.А.Ст.преподаватель Дудник О.А.
Query with HibernateQuery with Hibernate
БиблиотекаБиблиотека HibernateHibernate
предлагает три видапредлагает три вида
запросов к БД:запросов к БД:
CriteriaCriteria HQLHQL SQLSQL
Запросы сЗапросы с
использованиемиспользованием
CriteriaCriteria
ОбъектОбъект CriteriaCriteria создается ссоздается с
помощью методапомощью метода
createCriteriacreateCriteria экземпляраэкземпляра
классакласса SessionSession::
CriteriaCriteria
//создаем критерий запроса//создаем критерий запроса
Criteria crit =Criteria crit =
ssession.createCriteria(Student.class);ession.createCriteria(Student.class);
//ограничиваем число результатов//ограничиваем число результатов
crit.setMaxResults(50);crit.setMaxResults(50);
//помещаем результаты в список//помещаем результаты в список
List studs = crit.list();List studs = crit.list();
List studs = session.createCriteria(Student.class)List studs = session.createCriteria(Student.class)
    .add( Expression.like("name", "Ivanov%") )    .add( Expression.like("name", "Ivanov%") )
    .add( Expression.between("age", 18, 25) )    .add( Expression.between("age", 18, 25) )
    .list();    .list();
List studs = session.createCriteria(Student.class)List studs = session.createCriteria(Student.class)
    .add( Expression.like("name", "_van%") )    .add( Expression.like("name", "_van%") )
    .add( Expression.or(    .add( Expression.or(
        Expression.eq( "age", new Integer(20) ),        Expression.eq( "age", new Integer(20) ),
        Expression.isNull("age")        Expression.isNull("age")
    ) )    ) )
    .list();    .list();
List studs = session.createCriteria(Student.class)List studs = session.createCriteria(Student.class)
    .add( Expression.in( "name", new String[] { "Ivanov Ivan",    .add( Expression.in( "name", new String[] { "Ivanov Ivan",
"Petrov Petia", "Zubin Egor" } ) )"Petrov Petia", "Zubin Egor" } ) )
    .add( Expression.disjunction()    .add( Expression.disjunction()
        .add( Expression.isNull("age") )        .add( Expression.isNull("age") )
        .add( Expression.eq("age", new Integer(20) ) )        .add( Expression.eq("age", new Integer(20) ) )
        .add( Expression.eq("age", new Integer(21) ) )        .add( Expression.eq("age", new Integer(21) ) )
        .add( Expression.eq("age", new Integer(22) ) )        .add( Expression.eq("age", new Integer(22) ) )
    ) )    ) )
    .list()    .list()
Expression.likeExpression.like — , ‘_’ —указывает шаблон где любой— , ‘_’ —указывает шаблон где любой
, ‘%’ —один символ любое количество символов, ‘%’ —один символ любое количество символов
Expression.isNullExpression.isNull — NULL.значение поля равно— NULL.значение поля равно
Expression.betweenExpression.between — ‘age’ — , 18 —имя поля минимальное— ‘age’ — , 18 —имя поля минимальное
, 25 —значение указанного поля его максимальное, 25 —значение указанного поля его максимальное
значениезначение
Expression.inExpression.in — указывает диапазон значений— указывает диапазон значений
конкретного поляконкретного поля
Expression.disjunctionExpression.disjunction,, Expression.orExpression.or — (OR) —дизъюнкция— (OR) —дизъюнкция
объединяет в себе несколько других выраженийобъединяет в себе несколько других выражений
.оператором ИЛИ.оператором ИЛИ
Expression.eqExpression.eq — -определяет равенство поля какому то— -определяет равенство поля какому то
.значению.значению
CriteriaCriteria
:Результаты также можно отсортировать:Результаты также можно отсортировать
List studs = sess.createCriteria(Student.class)List studs = sess.createCriteria(Student.class)
    .add( Expression.like("name", "Iv%")    .add( Expression.like("name", "Iv%")
    .addOrder( Order.asc("name") )//по    .addOrder( Order.asc("name") )//по
возрастаниювозрастанию
    .addOrder( Order.desc("age") )//по убыванию    .addOrder( Order.desc("age") )//по убыванию
    .list();    .list();
Запросы сЗапросы с
использованиемиспользованием
SQLSQL
sesssessionion.createSQLQuery("select * from.createSQLQuery("select * from
Student").addEntity(Student.class).list();Student").addEntity(Student.class).list();
sesssessionion.createSQLQuery("select id, name, age.createSQLQuery("select id, name, age
from Student").addEntity(Student.class).list();from Student").addEntity(Student.class).list();
Query query = session.createSQLQuery("select *Query query = session.createSQLQuery("select *
from Student where namefrom Student where name
like ?").addEntity(Student.class);like ?").addEntity(Student.class);
List result = query.setString(0, "Ivan%").list();List result = query.setString(0, "Ivan%").list();
query = session.createSQLQuery("select * fromquery = session.createSQLQuery("select * from
Запросы сЗапросы с
использованиемиспользованием
HQLHQL
HQLHQL((The Hibernate Query LanguageThe Hibernate Query Language — Язык— Язык
запросовзапросов HibernateHibernate), который во многом), который во многом
похож на языкпохож на язык SQLSQL, с той разницей, что, с той разницей, что
является полностью объектно-является полностью объектно-
ориентированным.ориентированным.
Запросы сЗапросы с
использованиемиспользованием
HQLHQL
HQLHQL((The Hibernate Query LanguageThe Hibernate Query Language — Язык— Язык
запросовзапросов HibernateHibernate), который во многом), который во многом
похож на языкпохож на язык SQLSQL, с той разницей, что, с той разницей, что
является полностью объектно-является полностью объектно-
ориентированным.ориентированным.
For example:For example:
List<Student> studs =List<Student> studs =
(List<Student>)session.createQuery("from(List<Student>)session.createQuery("from
Student order by name").list();Student order by name").list();
Запросы сЗапросы с
использованиемиспользованием
HQLHQL
List<String> names =List<String> names =
(List<String>)session.createQuery("select(List<String>)session.createQuery("select
stud.name from Student stud order bystud.name from Student stud order by
name").list();name").list();

More Related Content

What's hot

CodeFest 2013. Никонов Г. — Как мы разрабатываем приложения для Windows Phone...
CodeFest 2013. Никонов Г. — Как мы разрабатываем приложения для Windows Phone...CodeFest 2013. Никонов Г. — Как мы разрабатываем приложения для Windows Phone...
CodeFest 2013. Никонов Г. — Как мы разрабатываем приложения для Windows Phone...CodeFest
 
Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1
Vasya Petrov
 
Next Gen Applications
Next Gen ApplicationsNext Gen Applications
Next Gen Applications
Vittorio Cioe
 
jQuery для ASP.NET разработчиков
jQuery для ASP.NET разработчиковjQuery для ASP.NET разработчиков
jQuery для ASP.NET разработчиков
akrakovetsky
 
Vba 06
Vba 06Vba 06
Yii development
Yii developmentYii development
Yii developmentMageCloud
 
Web весна 2013 лекция 4
Web весна 2013 лекция 4Web весна 2013 лекция 4
Web весна 2013 лекция 4Technopark
 
Tequila - язык для продвинутой генерации JSON
Tequila - язык для продвинутой генерации JSONTequila - язык для продвинутой генерации JSON
Tequila - язык для продвинутой генерации JSONIvan Nemytchenko
 
Javascript
JavascriptJavascript
Javascript
Vasya Petrov
 
Web осень 2012 лекция 4
Web осень 2012 лекция 4Web осень 2012 лекция 4
Web осень 2012 лекция 4Technopark
 
Agile Instrumentation
Agile InstrumentationAgile Instrumentation
Agile Instrumentation
Mikalai_Kardash
 
Andrew Borisenko "Magic of Vue.js""
Andrew Borisenko  "Magic of Vue.js""Andrew Borisenko  "Magic of Vue.js""
Andrew Borisenko "Magic of Vue.js""
OdessaJS Conf
 
QA Fest 2019. Андрей Солнцев. Selenide для профи
QA Fest 2019. Андрей Солнцев. Selenide для профиQA Fest 2019. Андрей Солнцев. Selenide для профи
QA Fest 2019. Андрей Солнцев. Selenide для профи
QAFest
 
I tmozg js_school
I tmozg js_schoolI tmozg js_school
I tmozg js_schoolITmozg
 
Web осень 2013 лекция 4
Web осень 2013 лекция 4Web осень 2013 лекция 4
Web осень 2013 лекция 4Technopark
 
Курсы по мобильной разработке. 1 лекция. Знакомство с iOS
Курсы по мобильной разработке. 1 лекция. Знакомство с iOSКурсы по мобильной разработке. 1 лекция. Знакомство с iOS
Курсы по мобильной разработке. 1 лекция. Знакомство с iOSГлеб Тарасов
 
Магия метаклассов
Магия метаклассовМагия метаклассов
Магия метаклассов
Andrey Zakharevich
 
[JAM 1.1] Clean Code (Paul Malikov)
[JAM 1.1] Clean Code (Paul Malikov)[JAM 1.1] Clean Code (Paul Malikov)
[JAM 1.1] Clean Code (Paul Malikov)
Evgeny Kaziak
 
Разработка крупного Standalone проекта на юнити: улучшаем производительность
Разработка крупного Standalone проекта на юнити: улучшаем производительностьРазработка крупного Standalone проекта на юнити: улучшаем производительность
Разработка крупного Standalone проекта на юнити: улучшаем производительность
Вадим Воробьев
 
TК°Conf. 10 проблем автоматизации UI и их решение с помощью JDI. Роман Иовлев.
TК°Conf. 10 проблем автоматизации UI и их решение с помощью JDI. Роман Иовлев.TК°Conf. 10 проблем автоматизации UI и их решение с помощью JDI. Роман Иовлев.
TК°Conf. 10 проблем автоматизации UI и их решение с помощью JDI. Роман Иовлев.
TKConf
 

What's hot (20)

CodeFest 2013. Никонов Г. — Как мы разрабатываем приложения для Windows Phone...
CodeFest 2013. Никонов Г. — Как мы разрабатываем приложения для Windows Phone...CodeFest 2013. Никонов Г. — Как мы разрабатываем приложения для Windows Phone...
CodeFest 2013. Никонов Г. — Как мы разрабатываем приложения для Windows Phone...
 
Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1
 
Next Gen Applications
Next Gen ApplicationsNext Gen Applications
Next Gen Applications
 
jQuery для ASP.NET разработчиков
jQuery для ASP.NET разработчиковjQuery для ASP.NET разработчиков
jQuery для ASP.NET разработчиков
 
Vba 06
Vba 06Vba 06
Vba 06
 
Yii development
Yii developmentYii development
Yii development
 
Web весна 2013 лекция 4
Web весна 2013 лекция 4Web весна 2013 лекция 4
Web весна 2013 лекция 4
 
Tequila - язык для продвинутой генерации JSON
Tequila - язык для продвинутой генерации JSONTequila - язык для продвинутой генерации JSON
Tequila - язык для продвинутой генерации JSON
 
Javascript
JavascriptJavascript
Javascript
 
Web осень 2012 лекция 4
Web осень 2012 лекция 4Web осень 2012 лекция 4
Web осень 2012 лекция 4
 
Agile Instrumentation
Agile InstrumentationAgile Instrumentation
Agile Instrumentation
 
Andrew Borisenko "Magic of Vue.js""
Andrew Borisenko  "Magic of Vue.js""Andrew Borisenko  "Magic of Vue.js""
Andrew Borisenko "Magic of Vue.js""
 
QA Fest 2019. Андрей Солнцев. Selenide для профи
QA Fest 2019. Андрей Солнцев. Selenide для профиQA Fest 2019. Андрей Солнцев. Selenide для профи
QA Fest 2019. Андрей Солнцев. Selenide для профи
 
I tmozg js_school
I tmozg js_schoolI tmozg js_school
I tmozg js_school
 
Web осень 2013 лекция 4
Web осень 2013 лекция 4Web осень 2013 лекция 4
Web осень 2013 лекция 4
 
Курсы по мобильной разработке. 1 лекция. Знакомство с iOS
Курсы по мобильной разработке. 1 лекция. Знакомство с iOSКурсы по мобильной разработке. 1 лекция. Знакомство с iOS
Курсы по мобильной разработке. 1 лекция. Знакомство с iOS
 
Магия метаклассов
Магия метаклассовМагия метаклассов
Магия метаклассов
 
[JAM 1.1] Clean Code (Paul Malikov)
[JAM 1.1] Clean Code (Paul Malikov)[JAM 1.1] Clean Code (Paul Malikov)
[JAM 1.1] Clean Code (Paul Malikov)
 
Разработка крупного Standalone проекта на юнити: улучшаем производительность
Разработка крупного Standalone проекта на юнити: улучшаем производительностьРазработка крупного Standalone проекта на юнити: улучшаем производительность
Разработка крупного Standalone проекта на юнити: улучшаем производительность
 
TК°Conf. 10 проблем автоматизации UI и их решение с помощью JDI. Роман Иовлев.
TК°Conf. 10 проблем автоматизации UI и их решение с помощью JDI. Роман Иовлев.TК°Conf. 10 проблем автоматизации UI и их решение с помощью JDI. Роман Иовлев.
TК°Conf. 10 проблем автоматизации UI и их решение с помощью JDI. Роман Иовлев.
 

Similar to использование Hibernate java persistence.part 2.

Работа с БД в Java
Работа с БД в JavaРабота с БД в Java
Работа с БД в Java
metaform
 
Java осень 2014 занятие 3
Java осень 2014 занятие 3Java осень 2014 занятие 3
Java осень 2014 занятие 3
Technopark
 
Производительность в Django
Производительность в DjangoПроизводительность в Django
Производительность в Django
MoscowDjango
 
Intro to Swift techitout
Intro to Swift techitoutIntro to Swift techitout
Intro to Swift techitout
Alexandr Graschenkov
 
Scala for android
Scala for androidScala for android
Scala for android
Alexander Rusin
 
Зачем нужна Scala?
Зачем нужна Scala?Зачем нужна Scala?
Зачем нужна Scala?
Vasil Remeniuk
 
Организация работы с API на Vue.js, Виталий Копачёв
Организация работы с API на Vue.js, Виталий КопачёвОрганизация работы с API на Vue.js, Виталий Копачёв
Организация работы с API на Vue.js, Виталий Копачёв
Mail.ru Group
 
Grails & Groovy
Grails & GroovyGrails & Groovy
Grails & Groovy
Denys Sosuliev
 
Регрессионное тестирование верстки
Регрессионное тестирование версткиРегрессионное тестирование верстки
Регрессионное тестирование верстки
Talks&Works
 
Lec 13
Lec 13Lec 13
WebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
WebCamp: Developer Day: Parse'им бэкенд - Аким ХалиловWebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
WebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
GeeksLab Odessa
 
Лекция #7. Django ORM
Лекция #7. Django ORMЛекция #7. Django ORM
Лекция #7. Django ORM
Яковенко Кирилл
 
Unit test быстрый старт
Unit test быстрый стартUnit test быстрый старт
Unit test быстрый старт
Antonio
 
CSS глазами машин
CSS глазами машинCSS глазами машин
CSS глазами машин
Roman Dvornov
 
Java осень 2012 лекция 8
Java осень 2012 лекция 8Java осень 2012 лекция 8
Java осень 2012 лекция 8Technopark
 
Selenide puzzlers @ devclub.eu
Selenide puzzlers @ devclub.euSelenide puzzlers @ devclub.eu
Selenide puzzlers @ devclub.eu
Andrei Solntsev
 
Alasql.js - SQL сервер на JavaScript
Alasql.js - SQL сервер на JavaScriptAlasql.js - SQL сервер на JavaScript
Alasql.js - SQL сервер на JavaScript
Andrey Gershun
 
Василий Захарченко: "Взгляд на queryDsl-sql фреймворк как альтернатива Hiber...
Василий Захарченко: "Взгляд на  queryDsl-sql фреймворк как альтернатива Hiber...Василий Захарченко: "Взгляд на  queryDsl-sql фреймворк как альтернатива Hiber...
Василий Захарченко: "Взгляд на queryDsl-sql фреймворк как альтернатива Hiber...
Provectus
 
Web осень 2013 лекция 6
Web осень 2013 лекция 6Web осень 2013 лекция 6
Web осень 2013 лекция 6Technopark
 

Similar to использование Hibernate java persistence.part 2. (20)

Работа с БД в Java
Работа с БД в JavaРабота с БД в Java
Работа с БД в Java
 
Java осень 2014 занятие 3
Java осень 2014 занятие 3Java осень 2014 занятие 3
Java осень 2014 занятие 3
 
Производительность в Django
Производительность в DjangoПроизводительность в Django
Производительность в Django
 
Intro to Swift techitout
Intro to Swift techitoutIntro to Swift techitout
Intro to Swift techitout
 
Scala for android
Scala for androidScala for android
Scala for android
 
Зачем нужна Scala?
Зачем нужна Scala?Зачем нужна Scala?
Зачем нужна Scala?
 
Организация работы с API на Vue.js, Виталий Копачёв
Организация работы с API на Vue.js, Виталий КопачёвОрганизация работы с API на Vue.js, Виталий Копачёв
Организация работы с API на Vue.js, Виталий Копачёв
 
Grails & Groovy
Grails & GroovyGrails & Groovy
Grails & Groovy
 
Регрессионное тестирование верстки
Регрессионное тестирование версткиРегрессионное тестирование верстки
Регрессионное тестирование верстки
 
Lec 13
Lec 13Lec 13
Lec 13
 
WebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
WebCamp: Developer Day: Parse'им бэкенд - Аким ХалиловWebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
WebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
 
Лекция #7. Django ORM
Лекция #7. Django ORMЛекция #7. Django ORM
Лекция #7. Django ORM
 
Unit test быстрый старт
Unit test быстрый стартUnit test быстрый старт
Unit test быстрый старт
 
CSS глазами машин
CSS глазами машинCSS глазами машин
CSS глазами машин
 
Java осень 2012 лекция 8
Java осень 2012 лекция 8Java осень 2012 лекция 8
Java осень 2012 лекция 8
 
Selenide puzzlers @ devclub.eu
Selenide puzzlers @ devclub.euSelenide puzzlers @ devclub.eu
Selenide puzzlers @ devclub.eu
 
course js day 2
course js day 2course js day 2
course js day 2
 
Alasql.js - SQL сервер на JavaScript
Alasql.js - SQL сервер на JavaScriptAlasql.js - SQL сервер на JavaScript
Alasql.js - SQL сервер на JavaScript
 
Василий Захарченко: "Взгляд на queryDsl-sql фреймворк как альтернатива Hiber...
Василий Захарченко: "Взгляд на  queryDsl-sql фреймворк как альтернатива Hiber...Василий Захарченко: "Взгляд на  queryDsl-sql фреймворк как альтернатива Hiber...
Василий Захарченко: "Взгляд на queryDsl-sql фреймворк как альтернатива Hiber...
 
Web осень 2013 лекция 6
Web осень 2013 лекция 6Web осень 2013 лекция 6
Web осень 2013 лекция 6
 

More from Asya Dudnik

Get started with docker &amp; dev ops
Get started with docker &amp; dev opsGet started with docker &amp; dev ops
Get started with docker &amp; dev ops
Asya Dudnik
 
Get started with docker &amp; dev ops
Get started with docker &amp; dev opsGet started with docker &amp; dev ops
Get started with docker &amp; dev ops
Asya Dudnik
 
Work with my_sql_-_database_in_java
Work with my_sql_-_database_in_javaWork with my_sql_-_database_in_java
Work with my_sql_-_database_in_java
Asya Dudnik
 
Oracle database
Oracle databaseOracle database
Oracle database
Asya Dudnik
 
Work with xml in java
Work with xml in javaWork with xml in java
Work with xml in java
Asya Dudnik
 
Jdbc in java
Jdbc in javaJdbc in java
Jdbc in java
Asya Dudnik
 
Java.fundamentals
Java.fundamentalsJava.fundamentals
Java.fundamentals
Asya Dudnik
 
Data bases in pictures
Data bases in picturesData bases in pictures
Data bases in pictures
Asya Dudnik
 
использование Hibernate java persistence.part 4.
использование Hibernate java persistence.part 4.использование Hibernate java persistence.part 4.
использование Hibernate java persistence.part 4.Asya Dudnik
 
Hibernate&ejb3 . part3.
Hibernate&ejb3 . part3.Hibernate&ejb3 . part3.
Hibernate&ejb3 . part3.
Asya Dudnik
 
Work with my sql database in java
Work with my sql   database in javaWork with my sql   database in java
Work with my sql database in java
Asya Dudnik
 
Java.fundamentals
Java.fundamentalsJava.fundamentals
Java.fundamentals
Asya Dudnik
 
Web&java. gwt
Web&java. gwtWeb&java. gwt
Web&java. gwt
Asya Dudnik
 
Web&java.jsf.
Web&java.jsf.Web&java.jsf.
Web&java.jsf.
Asya Dudnik
 
Web&java. jsp
Web&java. jspWeb&java. jsp
Web&java. jsp
Asya Dudnik
 
Java fx for interface
Java fx for interfaceJava fx for interface
Java fx for interface
Asya Dudnik
 
Java fx for interface
Java fx for interfaceJava fx for interface
Java fx for interface
Asya Dudnik
 
Apache maven in java projects
Apache maven in java projectsApache maven in java projects
Apache maven in java projects
Asya Dudnik
 
Threads in java
Threads in javaThreads in java
Threads in java
Asya Dudnik
 

More from Asya Dudnik (20)

Get started with docker &amp; dev ops
Get started with docker &amp; dev opsGet started with docker &amp; dev ops
Get started with docker &amp; dev ops
 
Get started with docker &amp; dev ops
Get started with docker &amp; dev opsGet started with docker &amp; dev ops
Get started with docker &amp; dev ops
 
Work with my_sql_-_database_in_java
Work with my_sql_-_database_in_javaWork with my_sql_-_database_in_java
Work with my_sql_-_database_in_java
 
Oracle database
Oracle databaseOracle database
Oracle database
 
Work with xml in java
Work with xml in javaWork with xml in java
Work with xml in java
 
Jdbc in java
Jdbc in javaJdbc in java
Jdbc in java
 
Java.fundamentals
Java.fundamentalsJava.fundamentals
Java.fundamentals
 
Data bases in pictures
Data bases in picturesData bases in pictures
Data bases in pictures
 
использование Hibernate java persistence.part 4.
использование Hibernate java persistence.part 4.использование Hibernate java persistence.part 4.
использование Hibernate java persistence.part 4.
 
Hibernate&ejb3 . part3.
Hibernate&ejb3 . part3.Hibernate&ejb3 . part3.
Hibernate&ejb3 . part3.
 
Work with my sql database in java
Work with my sql   database in javaWork with my sql   database in java
Work with my sql database in java
 
Java.fundamentals
Java.fundamentalsJava.fundamentals
Java.fundamentals
 
Web&java. gwt
Web&java. gwtWeb&java. gwt
Web&java. gwt
 
Web&java.jsf.
Web&java.jsf.Web&java.jsf.
Web&java.jsf.
 
Web&java. jsp
Web&java. jspWeb&java. jsp
Web&java. jsp
 
Web&java. jsp
Web&java. jspWeb&java. jsp
Web&java. jsp
 
Java fx for interface
Java fx for interfaceJava fx for interface
Java fx for interface
 
Java fx for interface
Java fx for interfaceJava fx for interface
Java fx for interface
 
Apache maven in java projects
Apache maven in java projectsApache maven in java projects
Apache maven in java projects
 
Threads in java
Threads in javaThreads in java
Threads in java
 

использование Hibernate java persistence.part 2.

  • 1. ИспользованиеИспользование Hibernate JavaHibernate Java PersistencePersistence.. Part 2.Part 2. Для студентовДля студентов старших курсов университетовстарших курсов университетов Ст.преподаватель Дудник О.А.Ст.преподаватель Дудник О.А.
  • 2. Query with HibernateQuery with Hibernate БиблиотекаБиблиотека HibernateHibernate предлагает три видапредлагает три вида запросов к БД:запросов к БД: CriteriaCriteria HQLHQL SQLSQL
  • 3. Запросы сЗапросы с использованиемиспользованием CriteriaCriteria ОбъектОбъект CriteriaCriteria создается ссоздается с помощью методапомощью метода createCriteriacreateCriteria экземпляраэкземпляра классакласса SessionSession::
  • 4. CriteriaCriteria //создаем критерий запроса//создаем критерий запроса Criteria crit =Criteria crit = ssession.createCriteria(Student.class);ession.createCriteria(Student.class); //ограничиваем число результатов//ограничиваем число результатов crit.setMaxResults(50);crit.setMaxResults(50); //помещаем результаты в список//помещаем результаты в список List studs = crit.list();List studs = crit.list();
  • 5. List studs = session.createCriteria(Student.class)List studs = session.createCriteria(Student.class)     .add( Expression.like("name", "Ivanov%") )    .add( Expression.like("name", "Ivanov%") )     .add( Expression.between("age", 18, 25) )    .add( Expression.between("age", 18, 25) )     .list();    .list(); List studs = session.createCriteria(Student.class)List studs = session.createCriteria(Student.class)     .add( Expression.like("name", "_van%") )    .add( Expression.like("name", "_van%") )     .add( Expression.or(    .add( Expression.or(         Expression.eq( "age", new Integer(20) ),        Expression.eq( "age", new Integer(20) ),         Expression.isNull("age")        Expression.isNull("age")     ) )    ) )     .list();    .list(); List studs = session.createCriteria(Student.class)List studs = session.createCriteria(Student.class)     .add( Expression.in( "name", new String[] { "Ivanov Ivan",    .add( Expression.in( "name", new String[] { "Ivanov Ivan", "Petrov Petia", "Zubin Egor" } ) )"Petrov Petia", "Zubin Egor" } ) )     .add( Expression.disjunction()    .add( Expression.disjunction()         .add( Expression.isNull("age") )        .add( Expression.isNull("age") )         .add( Expression.eq("age", new Integer(20) ) )        .add( Expression.eq("age", new Integer(20) ) )         .add( Expression.eq("age", new Integer(21) ) )        .add( Expression.eq("age", new Integer(21) ) )         .add( Expression.eq("age", new Integer(22) ) )        .add( Expression.eq("age", new Integer(22) ) )     ) )    ) )     .list()    .list()
  • 6. Expression.likeExpression.like — , ‘_’ —указывает шаблон где любой— , ‘_’ —указывает шаблон где любой , ‘%’ —один символ любое количество символов, ‘%’ —один символ любое количество символов Expression.isNullExpression.isNull — NULL.значение поля равно— NULL.значение поля равно Expression.betweenExpression.between — ‘age’ — , 18 —имя поля минимальное— ‘age’ — , 18 —имя поля минимальное , 25 —значение указанного поля его максимальное, 25 —значение указанного поля его максимальное значениезначение Expression.inExpression.in — указывает диапазон значений— указывает диапазон значений конкретного поляконкретного поля Expression.disjunctionExpression.disjunction,, Expression.orExpression.or — (OR) —дизъюнкция— (OR) —дизъюнкция объединяет в себе несколько других выраженийобъединяет в себе несколько других выражений .оператором ИЛИ.оператором ИЛИ Expression.eqExpression.eq — -определяет равенство поля какому то— -определяет равенство поля какому то .значению.значению
  • 7. CriteriaCriteria :Результаты также можно отсортировать:Результаты также можно отсортировать List studs = sess.createCriteria(Student.class)List studs = sess.createCriteria(Student.class)     .add( Expression.like("name", "Iv%")    .add( Expression.like("name", "Iv%")     .addOrder( Order.asc("name") )//по    .addOrder( Order.asc("name") )//по возрастаниювозрастанию     .addOrder( Order.desc("age") )//по убыванию    .addOrder( Order.desc("age") )//по убыванию     .list();    .list();
  • 8. Запросы сЗапросы с использованиемиспользованием SQLSQL sesssessionion.createSQLQuery("select * from.createSQLQuery("select * from Student").addEntity(Student.class).list();Student").addEntity(Student.class).list(); sesssessionion.createSQLQuery("select id, name, age.createSQLQuery("select id, name, age from Student").addEntity(Student.class).list();from Student").addEntity(Student.class).list(); Query query = session.createSQLQuery("select *Query query = session.createSQLQuery("select * from Student where namefrom Student where name like ?").addEntity(Student.class);like ?").addEntity(Student.class); List result = query.setString(0, "Ivan%").list();List result = query.setString(0, "Ivan%").list(); query = session.createSQLQuery("select * fromquery = session.createSQLQuery("select * from
  • 9. Запросы сЗапросы с использованиемиспользованием HQLHQL HQLHQL((The Hibernate Query LanguageThe Hibernate Query Language — Язык— Язык запросовзапросов HibernateHibernate), который во многом), который во многом похож на языкпохож на язык SQLSQL, с той разницей, что, с той разницей, что является полностью объектно-является полностью объектно- ориентированным.ориентированным.
  • 10. Запросы сЗапросы с использованиемиспользованием HQLHQL HQLHQL((The Hibernate Query LanguageThe Hibernate Query Language — Язык— Язык запросовзапросов HibernateHibernate), который во многом), который во многом похож на языкпохож на язык SQLSQL, с той разницей, что, с той разницей, что является полностью объектно-является полностью объектно- ориентированным.ориентированным. For example:For example: List<Student> studs =List<Student> studs = (List<Student>)session.createQuery("from(List<Student>)session.createQuery("from Student order by name").list();Student order by name").list();
  • 11. Запросы сЗапросы с использованиемиспользованием HQLHQL List<String> names =List<String> names = (List<String>)session.createQuery("select(List<String>)session.createQuery("select stud.name from Student stud order bystud.name from Student stud order by name").list();name").list();