Проект

Общее

Профиль

ORM » История » Версия 2

Александр Александров, 23.04.2019 21:22

1 1 Александр Александров
h1. ORM
2
3
h2. Вопросы
4
5
# Что такое Hibernate?
6
# Что такое ORM?
7
# Какие преимущства от использования Hibernate Framework?
8
# Как Hibernate помогает в программировании?
9
# Какие преимущества Hibernate над JDBC?
10
# Что такое конфигурационный файл Hibernate?
11
# Способы конфигурации работы с Hibernate.
12
# Что такое Hibernate mapping Ùle?
13
# Что такое Переходные объекты (Transient Objects)?
14
# Что такое постоянные объекты (Persistent objects)?
15
# Что такое TransactionFactory?
16
# Что такое ConnectionProvider?
17
# Что такое Трансакция (Transaction)?
18
# Какие существуют стратегии загрузки объектов в Hibernate?
19
# Какие бывают id generator классы в Hibernate?
20
# Какие ключевые интерфейсы использует Hibernate?
21
# Назовите некоторые важные аннотации, используемые для отображения в Hibernate.
22
# Какая роль интерфейса Session в Hibernate?
23
# Является ли Hibernate Session потокобезоспаным?
24
# Какая роль интерфейса SessionFactory в Hibernate?
25
# Является ли Hibernate SessionFactory потокобезоспансым?
26
# В чем разница между openSession и getCurrentSession?
27
# Какие типы коллекций представлены в Hibernate?
28
# Какие типы менеджмента транзакций поддерживаются в Hibernate?
29
# Что собой являет коллекция типа Bag и зачем она используется?
30
# Какие типы кэша используются в Hibernate?
31
# Какие существуют типы стратегий кэша?
32
# Что вы знаете о кэширование в Hibernate? Объясните понятие кэш первого уровня в Hibernate?
33
# Как настраивается кэш второго уровня в Hibernate?
34
# Какая разница в работе методов load(); и get();?
35
# Каковы существуют различные состояния у entity bean?
36
# Что произойдет, если будет отсутствовать конструктор без аргументов у Entity Bean?
37
# Как используется вызов метода Hibernate Session merge()?
38
# В чем разница между Hibernate save(), saveOrUpdate() и persist()?
39
# Что такое Lazy fetching(изъятие) в Hibernate?
40
# В чем разница между sorted collection и ordered collection? Какая из них лучше?
41
# Как реализованы Join’ы Hibernate?
42
# Почему мы не должны делать Entity class как Ùnal?
43
# Что вы знаете о HQL и каковы его преимущества?
44
# Что такое Query Cache в Hibernate?
45
# Можем ли мы выполнить SQL (sql native) запрос в Hibernate?
46
# Для чего нужна поддержка SQL (sql native) запросов в Hibernate?
47
# Что такое Named SQL Query?
48
# Каковы преимущества Named SQL Query?
49
# Как добавить логирование log4j в Hibernate приложение?
50
# Как логировать созданные Hibernate SQL запросы в лог-файлы?
51
# Что вы знаете о Hibernate прокси и как это помогает в ленивой загрузке (lazy load)?
52
# Как управлять транзакциями с помощью Hibernate?
53
# Что такое каскадные связи (обновления) в Hibernate?
54
# Какие каскадные типы есть в Hibernate?
55
# Что такое сесиия и фаблика сессий в Hibernate? Как настроить session factory в конфигурационном файле Spring?
56
# Как использовать JNDI DataSource сервера приложений с Hibernate Framework?
57
# Как интегрировать Hibernate и Spring?
58
# Какие паттерны применяются в Hibernate?
59
# Расскажите о Hibernate Validator Framework.
60
# Какие преимущества дает использование плагина Hibernate Tools Eclipse?
61
62
h2. Ответы
63
64
h3. Что такое Hibernate?
65
66 2 Александр Александров
Это фреймворк для объектно-реляционного отображения сущностей в традиционные реляционные базу данных.
67
68
Основные возможности фреймворка:
69
70
* Автоматическая генерация и обновление таблиц в базах данных;
71
* Поскольку основные запросы к базе данных (сохранение, обновление, удаление и поиск) представлены как методы фрейморка, то значительно сокращается код, который пишется разработчиком;
72
* Обеспечивает использование SQL подобного языка (HQL - hibernate query language). Запросы HQL могут быть записаны рядом объектами данных (POJO классы подготовленные для работы с базой данных).
73
74 1 Александр Александров
h3. Что такое ORM?
75
76 2 Александр Александров
ORM (англ. Object-relational mapping, рус. Объектно-реляционное отображение) - технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая "виртуальную объектную базу данных".
77
78 1 Александр Александров
h3. Какие преимущства от использования Hibernate Framework?
79
80 2 Александр Александров
Некоторые из них:
81
82
* Устраняет множество повторяющегося кода, который постоянно преследует разработчика при работе с JDBC. Скрывает от разработчика множество кода, необходимого для управления ресурсами и позволяет сосредоточиться на бизнес логике.
83
* Поддерживает XML так же как и JPA аннотации, что позволяет сделать реализацию кода независимой.
84
* Предоставляет собственный мощный язык запросов (HQL), который похож на SQL. Стоит отметить, что HQL полностью объектно-ориентирован и понимает такие принципы, как наследование, полиморфизм и ассоциации (связи).
85
* Hibernate легко интегрируется с другими Java EE фреймворками, например, Spring Framework поддерживает встроенную интеграцию с Hibernate.
86
* Поддерживает ленивую инициализацию используя proxy объекты и выполняет запросы к базе данных только по необходимости.
87
* Поддерживает разные уровни cache, а следовательно может повысить производительность.
88
* Важно, что Hibernate может использовать чистый SQL, а значит поддерживает возможность оптимизации запросов и работы с любым сторонним вендором БД.
89
* Hibernate - open source проект. Благодаря этому доступны тысячи открытых статей, примеров, а так же документации по использованию фреймворка.
90
91 1 Александр Александров
h3. Как Hibernate помогает в программировании?
92
93 2 Александр Александров
Hibernate реализует ряд фичь которые значительно упрощают работу разработчика.
94
95
* Одной из таких фичь является то, что hibernate позволяет разработчику избежать написания большинства SQL запросов (они уже реализованы , вам надо просто использовать методы которые предоставляет фреймворк).
96
* Под бортом у Hibernate есть куча полезных инструментов которые значительно ускоряют работу приложения, самыми примечательными из них являются двухуровневое кэширования и тонкие настройки lazy и fetch изъятия.
97
* Сам генерирует таблицы в базу данных.
98
99 1 Александр Александров
h3. Какие преимущества Hibernate над JDBC?
100
101 2 Александр Александров
Hibernate имеет ряд преимуществ перед JDBC API:
102
103
* Hibernate удаляет множество повторяющегося кода из JDBC API, а следовательно его легче читать, писать и поддерживать.
104
* Hibernate поддерживает наследование, ассоциации и коллекции, что не доступно в JDBC API.
105
* Hibernate неявно использует управление транзакциями. Большинство запросов нельзя выполнить вне транзакции. При использовании JDBC API для управления транзакциями нужно явно использовать commit и rollback.
106
* JDBC API throws SQLException, которое относится к проверяемым исключениям, а значит необходимо постоянно писать множество блоков try-catch. В большинстве случаев это не нужно для каждого вызова JDBC и используется для управления транзакциями. Hibernate оборачивает исключения JDBC через непроверяемые JDBCException или HibernateException, а значит нет необходимости проверять их в коде каждый раз. Встроенная поддержка управления транзакциями в Hibernate убирает блоки try-catch.
107
* Hibernate Query Language (HQL) более объектно ориентированный и близкий к Java язык программирования, чем SQL в JDBC.
108
* Hibernate поддерживает кэширование, а запросы JDBC - нет, что может понизить производительность.
109
* Hibernate предоставляет возможность управления БД (например создания таблиц), а в JDBC можно работать только с существующими таблицами в базе данных. Конфигурация Hibernate позволяет использовать JDBC вроде соединения по типу JNDI DataSource для пула соединений. Это важная фича для энтерпрайз приложений, которая полностью отсутствует в JDBC API.
110
* Hibernate поддерживает аннотации JPA, а значит код является переносимым на другие ORM фреймворки, реализующие стандарт, в то время как код JDBC сильно привязан к приложению.
111
112 1 Александр Александров
h3. Что такое конфигурационный файл Hibernate?
113
114 2 Александр Александров
Файл конфигурации Hibernate содержит в себе данные о базе данных и необходим для инициализации SessionFactory. В .xml файле необходимо указать вендора базы данных или JNDI ресурсы, а так же информацию об используемом диалекте, что поможет hibernate выбрать режим работы с конкретной базой данных.
115
116 1 Александр Александров
h3. Способы конфигурации работы с Hibernate.
117
118 2 Александр Александров
Существует четыре способа конфигурации работы с Hibernate:
119 1 Александр Александров
120 2 Александр Александров
* используя аннотации;
121
* hibernate.cfg.xml;
122
* hibernate.properties;
123
* persistence.xml.
124
125
Самый частый способ конфигурации: через аннотации и файл persistence.xml, что касается файлов hibernate.properties и hibernate.cfg.xml, то hibernate.cfg.xml главнее (если в приложение есть оба файла, то принимаются настройки из файла hibernate.cfg.xml). Конфигурация аннотациями, хоть и удобна, но не всегда возможна, к примеру, если для разных баз данных или для разных ситуаций вы хотите иметь разные конфигурацию сущностей, то следует использовать xml файлы конфигураций.
126
127
h3. Что такое Hibernate mapping file?
128
129
Файл отображения (mapping file) используется для связи entity бинов и колонок в таблице базы данных. В случаях, когда не используются аннотации JPA, файл отображения .xml может быть полезен (например при использовании сторонних библиотек).
130
131 1 Александр Александров
h3. Что такое Переходные объекты (Transient Objects)?
132
133 2 Александр Александров
Экземпляры долгоживущих классов, которые в настоящее время не связаны c Cессией. Они, возможно, были инициализированы в приложении и еще не сохранены, или же они были инициализированы закрытой Cессией.
134
135 1 Александр Александров
h3. Что такое постоянные объекты (Persistent objects)?
136
137 2 Александр Александров
Короткоживущие, однопоточные объекты, содержащие постоянное состояние и бизнес-функции. Это могут быть простые Java Beans/POJOs (Plain Old Java Object). Они связаны только с одной Cессией. После того, как Cессия закрыта, они будут отделены и свободны для использования в любом протоколе прикладного уровня (например, в качестве объектов передачи данных в и из представления).
138
139 1 Александр Александров
h3. Что такое TransactionFactory?
140
141 2 Александр Александров
Фабрика для экземпляров Transaction. Интерфейс не открыт для приложения, но может быть расширен или реализован разработчиком.
142
143 1 Александр Александров
h3. Что такое ConnectionProvider?
144
145 2 Александр Александров
Фабрика и пул JDBC соединений. Интерфейс абстрагирует приложение от основного источника данных или диспетчера драйверов. Он не открыт для приложения, но может быть расширен или реализован разработчиком.
146 1 Александр Александров
147 2 Александр Александров
h3. Что такое Транзакция (Transaction)?
148
149
Однопоточный, короткоживущий объект, используемый приложением для указания atomic переменных работы. Он абстрагирует приложение от основных JDBC, JTA или CORBA транзакций. Сессия может охватывать несколько Транзакций в некоторых случаях. Тем не менее, разграничение транзакций, также используемое в основах API или Transaction, всегда обязательно.
150
151 1 Александр Александров
h3. Какие существуют стратегии загрузки объектов в Hibernate?
152
153 2 Александр Александров
Существуют следующие типа fetch'a:
154
155
* Join fetching: hibernate получает ассоциированные объекты и коллекции одним SELECT используя OUTER JOIN.
156
* Select fetching: использует уточняющий SELECT чтобы получить ассоциированные объекты и коллекции. Если вы не установите lazy fetching определив lazy="false", уточняющий SELECT будет выполнен только когда вы запрашиваете доступ к ассоциированным объектам.
157
* Subselect fetching: поведение такое же, как у предыдущего типа, за тем исключением, что будут загружены ассоциации для все других коллекций, "родительским" для которых является сущность, которую вы загрузили первым SELECT’ом.
158
* Batch fetching: оптимизированная стратегия вида select fetching. Получает группу сущностей или коллекций в одном SELECT’е.
159
160 1 Александр Александров
h3. Какие бывают id generator классы в Hibernate?
161
162 2 Александр Александров
increment - генерирует идентификатор типа long, short или int, которые будет уникальным только в том случае, если другой процесс не добавляет запись в эту же таблицу в это же время.
163
164
* identity - генерирует идентификатор типа long, short или int. Поддерживается в DB2, MySQL, MS SQL Server, Sybase и HypersonicSQL.
165
* sequence - использует последовательности в DB2, PostgreSQL, Oracle, SAP DB, McKoi или генератор Interbase. Возвращает идентификатор типа long, short или int.
166
* hilo - использует алгоритм hi/lo для генерации идентификаторов типа long, short или int. Алгоритм гарантирует генерацию идентификаторов, которые уникальны только в данной базе данных.
167
* seqhilo - использует алгоритм hi/lo для генерации идентификаторов типа long, short или int учитывая последовательность базы данных.
168
* uuid - использует для генерации идентификатора алгоритм 128-bit UUID. Идентификатор будет уникальным в пределах сети. UUID представляется строкой из 32 чисел.
169
* guid - использует сгенерированую БД строку GUID в MS SQL Server и MySQL.
170
* native - использует identity, sequence или hilo в завимисимости от типа БД, с которой работает приложение
171
* assigned - позволяет приложению устанавливать идентификатор объекту, до вызова метода save(). Используется по умолчанию, если тег <generator> не указан.
172
* select - получает первичный ключ, присвоенный триггером БД
173
* foreign - использует идентификатор другого, связанного с данным объекта.
174
* Используется в <one-to-one> ассоциации первичных ключей.
175
* sequence-identity - специализированный генератор идентификатора.
176
177 1 Александр Александров
h3. Какие ключевые интерфейсы использует Hibernate?
178
179 2 Александр Александров
Существует пять ключевых интерфейсов которые используются в каждом приложении связанном с Hibernate:
180
181
* Session interface;
182
* SessionFactory interface;
183
* Configuration interface;
184
* Transaction interface;
185
* Query and Criteria interfaces.
186
187 1 Александр Александров
h3. Назовите некоторые важные аннотации, используемые для отображения в Hibernate.
188
189 2 Александр Александров
Hibernate поддерживает как аннотации из JPA, так и свои собственные, которые находятся в пакете org.hibernate.annotations. Наиболее важные аннотации JPA и Hibernate:
190
191
* javax.persistence.Entity: используется для указания класса как entity bean.
192
* javax.persistence.Table: используется для определения имени таблицы из БД, которая будет отображаться на entity bean.
193
* javax.persistence.Access: определяет тип доступа, поле или свойство. Поле — является значением по умолчанию и если нужно, чтобы hibernate использовать методы getter/setter, то их необходимо задать для нужного свойства.
194
* javax.persistence.Id: определяет primary key в entity bean.
195
* javax.persistence.EmbeddedId: используется для определения составного ключа в бине.
196
* javax.persistence.Column: определяет имя колонки из таблицы в базе данных.
197
* javax.persistence.GeneratedValue: задает стратегию создания основных ключей. Используется в сочетании с javax.persistence.GenerationType enum.
198
* javax.persistence.OneToOne: задает связь один-к-одному между двумя сущностными бинами. Соответственно есть другие аннотации OneToMany, ManyToOne и ManyToMany.
199
* org.hibernate.annotations.Cascade: определяет каскадную связь между двумя entity бинами. Используется в связке с org.hibernate.annotations.CascadeType.
200
* javax.persistence.PrimaryKeyJoinColumn: определяет внешний ключ для свойства. Используется вместе с org.hibernate.annotations.GenericGenerator и org.hibernate.annotations.Parameter.
201
202 1 Александр Александров
h3. Какая роль интерфейса Session в Hibernate?
203
204 2 Александр Александров
Session - это основной интерфейс, который отвечает за связь с базой данных. Так же, он помогает создавать объекты запросов для получение персистентных объектов. (персистентный объект - объект который уже находится в базе данных; объект запроса - объект который получается когда мы получаем результат запроса в базу данных, именно с ним работает приложение). Обьект Session можно получить из SessionFactory :
205
206
<pre><code class="java">
207
Session session = sessionFactory.openSession();
208
</code></pre>
209
210
Роль интерфейса Session:
211
212
* является оберткой для jdbc подключения к базе данных;
213
* является фабрикой для транзакций (согласно официальной документации transaction - аllows the application to deÙne units of work, что , по сути, означает что транзакция определяет границы операций связанных с базой данных).
214
* является хранителем обязательного кэша первого уровня
215
216 1 Александр Александров
h3. Является ли Hibernate Session потокобезоспаным?
217
218 2 Александр Александров
Т.к. объект SessionFactory immutable (неизменяемый), то да, он потокобезопасный. Множество потоков может обращаться к одному объекту одновременно.
219
220 1 Александр Александров
h3. Какая роль интерфейса SessionFactory в Hibernate?
221
222 2 Александр Александров
Именно из объекта SessionFactory мы получаем объекты типа Session. На все приложение существует только одна SessionFactory и она инициализируеться вместе со стартом приложения. SessionFactory кэширует мета-дату и SQL запросы которые часто используются приложением во время работы. Так же оно кэширует информацию которая была получена в одной из транзакций и может быть использована и в других транзакциях.
223
224
Объект SessionFactory можно получить следующим обращением:
225
226
<pre><code class="java">
227
SessionFactory = sessionFactory = configuration.buildSessionFactory();
228
</code></pre>
229
230 1 Александр Александров
h3. Является ли Hibernate SessionFactory потокобезоспансым?
231
232 2 Александр Александров
Т.к. объект SessionFactory immutable (неизменяемый), то да, он потокобезопасный. Множество потоков может обращаться к одному объекту одновременно.
233
234 1 Александр Александров
h3. В чем разница между openSession и getCurrentSession?
235
236 2 Александр Александров
Hibernate SessionFactory getCurrentSession() возвращает сессию, связанную с контекстом. Но для того, чтобы это работало, нам нужно настроить его в конфигурационном файле hibernate. Так как этот объект session связан с контекстом hibernate, то отпадает необходимость к его закрытию. Объект session закрывается вместе с закрытием SessionFactory.
237
238
<pre><code class="xml">
239
<property name="hibernate.current_session_context_class">thread</property>
240
</code></pre>
241
242
Метод Hibernate SessionFactory openSession() всегда создает новую сессию. Мы должны обязательно контролировать закрытие объекта сеанса по завершению всех операций с базой данных. Для многопоточной среды необходимо создавать новый объект session для каждого запроса. Существует еще один метод openStatelessSession(), который возвращает session без поддержки состояния. Такой объект не реализует первый уровень кэширования и не взаимодействует с вторым уровнем. Сюда же можно отнести игнорирование коллекций и некоторых обработчиков событий. Такие объекты могут быть полезны при загрузке больших объемов данных без удержания большого кол-ва информации в кэше.
243
244 1 Александр Александров
h3. Какие типы коллекций представлены в Hibernate?
245
246 2 Александр Александров
Bag, Set, List, Map, Array.
247
248 1 Александр Александров
h3. Какие типы менеджмента транзакций поддерживаются в Hibernate?
249
250 2 Александр Александров
Hibernate взаимодействует с БД через JDBC-соединение. Таким образом он поддерживает управляемые и не управляемые транзакции.
251
252
Неуправляемые транзакции в web-контейнере:
253
254
{{dmsf_image(308)}}
255
256
Управляемые транзакции на сервере приложений, использующий JTA:
257
258
{{dmsf_image(309)}}
259
260
261
262 1 Александр Александров
h3. Что собой являет коллекция типа Bag и зачем она используется?
263
264 2 Александр Александров
Своей реализации тип коллекции Bag очень напоминает Set, разница состоит в том, что Bag может хранить повторяющиеся значения. Bag хранит непроиндексированный список элементов. Большинство таблиц в базе данных имеют индексы отображающие положение элемента данных один относительно другого, данные индексы имеют представление в таблице в виде отдельной колонки. При объектно-реляционном маппинге, значения колонки индексов мапится на индекс в Array, на индекс в List или на key в Map. Если вам надо получить коллекцию объектов не содержащих данные индексы, то вы можете воспользоваться коллекциями типа Bag или Set (коллекции содержат данные в неотсортированном виде, но могут быть отсортированы согласно запросу).
265
266 1 Александр Александров
h3. Какие типы кэша используются в Hibernate?
267
268 2 Александр Александров
Hibernate использует 2 типа кэша: кэш первого уровня и кэш второго уровня.
269
270
Кэш первого уровня ассоциирован с объектом сесии, в то время, как кэш второго уровня ассоциирован с объектом фабрики сессий. По-умолчанию Hibernate использует кэш первого уровня для каждой операции в транзакции. В первую очередь кэш используется чтобы уменьшить количество SQL-запросов. Например если объект модифицировался несколько раз в одной и той же транзакции, то Hibernate сгенерирует только один UPDATE.
271
272
Чтобы уменьшить трафик с БД, Hibernate использует кэш второго уровня, который является общим для всего приложения, а не только для данного конкретного пользователя. Таким образом если результат запроса находится в кэше, мы потенциально уменьшаем количество транзакций к БД.
273
274
EHCache - это быстрый и простой кэш. Он поддерживает read-only и read/write кэширование, а так же кэширование в память и на диск. Но не поддерживает кластеризацию.
275
OSCache - это другая opensource реализация кэша. Помимо всего, что поддерживает EHCache, эта реализация так же поддерживает кластеризацию через JavaGroups или JMS.
276
SwarmCache - это просто cluster-based решение, базирующееся на JavaGroups. Поддерживает read-only и нестрогое read/write кэширование. Этот тип кэширование полезен, когда количество операций чтения из БД превышает количество операций записи.
277
JBoss TreeCache - предоставляет полноценный кэш транзакции.
278
279 1 Александр Александров
h3. Какие существуют типы стратегий кэша?
280
281 2 Александр Александров
Read-only: эта стратегия используется когда данные вычитываются, но никогда не обновляется. Самая простая и производительная стратегия
282
Read/write: может быть использована, когда данные должны обновляться.
283
Нестрогий read/write: эта стратегия не гарантирует, что две транзакции не модифицируют одни и те же данные синхронно.
284
Transactional: полноценное кэширование транзакций. Доступно только в JTA окружении.
285
286 1 Александр Александров
h3. Что вы знаете о кэширование в Hibernate? Объясните понятие кэш первого уровня в Hibernate?
287 2 Александр Александров
288
Hibernate использует кэширование, чтобы сделать наше приложение быстрее. Кэш Hibernate может быть очень полезным в получении высокой производительности приложения при правильном использовании. Идея кэширования заключается в сокращении количества запросов к базе данных.
289
290
Кэш первого уровня Hibernate связан с объектом Session. Кэш первого уровня у Hibernate включен по умолчанию и не существует никакого способа, чтобы его отключить. Однако Hibernate предоставляет методы, с помощью которых мы можем удалить выбранные объекты из кэша или полностью очистить кэш. 
291
292
Любой объект закэшированный в session не будет виден другим объектам session. После закрытия объекта сессии все кэшированные объекты будут потеряны.
293 1 Александр Александров
294
h3. Как настраивается кэш второго уровня в Hibernate?
295
296
h3. Какая разница в работе методов load(); и get();?
297
298
h3. Каковы существуют различные состояния у entity bean?
299
300
h3. Что произойдет, если будет отсутствовать конструктор без аргументов у Entity Bean?
301
302
h3. Как используется вызов метода Hibernate Session merge()?
303
304
h3. В чем разница между Hibernate save(), saveOrUpdate() и persist()?
305
306
h3. Что такое Lazy fetching(изъятие) в Hibernate?
307
308
h3. В чем разница между sorted collection и ordered collection? Какая из них лучше?
309
310
h3. Как реализованы Join’ы Hibernate?
311
312
h3. Почему мы не должны делать Entity class как Ùnal?
313
314
h3. Что вы знаете о HQL и каковы его преимущества?
315
316
h3. Что такое Query Cache в Hibernate?
317
318
h3. Можем ли мы выполнить SQL (sql native) запрос в Hibernate?
319
320
h3. Для чего нужна поддержка SQL (sql native) запросов в Hibernate?
321
322
h3. Что такое Named SQL Query?
323
324
h3. Каковы преимущества Named SQL Query?
325
326
h3. Как добавить логирование log4j в Hibernate приложение?
327
328
h3. Как логировать созданные Hibernate SQL запросы в лог-файлы?
329
330
h3. Что вы знаете о Hibernate прокси и как это помогает в ленивой загрузке (lazy load)?
331
332
h3. Как управлять транзакциями с помощью Hibernate?
333
334
h3. Что такое каскадные связи (обновления) в Hibernate?
335
336
h3. Какие каскадные типы есть в Hibernate?
337
338
h3. Что такое сесиия и фаблика сессий в Hibernate? Как настроить session factory в конфигурационном файле Spring?
339
340
h3. Как использовать JNDI DataSource сервера приложений с Hibernate Framework?
341
342
h3. Как интегрировать Hibernate и Spring?
343
344
h3. Какие паттерны применяются в Hibernate?
345
346
h3. Расскажите о Hibernate Validator Framework.
347
348
h3. Какие преимущества дает использование плагина Hibernate Tools Eclipse?
Go to top