HibernateNotesForProfessionals.pdf

(669 KB) Pobierz
Hibernate
Hibernate
Notes for Professionals
Notes for Professionals
of professional hints and tricks
30+ pages
GoalKicker.com
Free Programming Books
Disclaimer
This is an unocial free book created for educational purposes and is
not aliated with ocial Hibernate group(s) or company(s).
All trademarks and registered trademarks are
the property of their respective owners
Contents
About
................................................................................................................................................................................... 1
Chapter 1: Getting started with Hibernate
...................................................................................................... 2
Section 1.1: Using XML Configuration to set up Hibernate
......................................................................................... 2
Section 1.2: Simple Hibernate example using XML
..................................................................................................... 4
Section 1.3: XML-less Hibernate configuration
........................................................................................................... 6
Chapter 2: Fetching in Hibernate
.......................................................................................................................... 8
Section 2.1: It is recommended to use FetchType.LAZY. Join fetch the columns when they are needed
.................................................................................................................................................................................. 8
Chapter 3: Hibernate Entity Relationships using Annotations
............................................................ 10
Section 3.1: Bi-Directional Many to Many using user managed join table object
................................................ 10
Section 3.2: Bi-Directional Many to Many using Hibernate managed join table
.................................................. 11
Section 3.3: Bi-directional One to Many Relationship using foreign key mapping
.............................................. 12
Section 3.4: Bi-Directional One to One Relationship managed by Foo.class
....................................................... 12
Section 3.5: Uni-Directional One to Many Relationship using user managed join table
..................................... 13
Section 3.6: Uni-directional One to One Relationship
.............................................................................................. 14
Chapter 4: HQL
............................................................................................................................................................ 15
Section 4.1: Selecting a whole table
........................................................................................................................... 15
Section 4.2: Select specific columns
.......................................................................................................................... 15
Section 4.3: Include a Where clause
.......................................................................................................................... 15
Section 4.4: Join
........................................................................................................................................................... 15
Chapter 5: Native SQL Queries
............................................................................................................................ 16
Section 5.1: Simple Query
........................................................................................................................................... 16
Section 5.2: Example to get a unique result
............................................................................................................. 16
Chapter 6: Mapping associations
....................................................................................................................... 17
Section 6.1: One to One Hibernate Mapping
............................................................................................................. 17
Chapter 7: Criterias and Projections
................................................................................................................ 19
Section 7.1: Use Filters
................................................................................................................................................. 19
Section 7.2: List using Restrictions
............................................................................................................................. 20
Section 7.3: Using Projections
.................................................................................................................................... 20
Chapter 8: Custom Naming Strategy
............................................................................................................... 21
Section 8.1: Creating and Using a Custom ImplicitNamingStrategy
...................................................................... 21
Section 8.2: Custom Physical Naming Strategy
....................................................................................................... 21
Chapter 9: Caching
..................................................................................................................................................... 24
Section 9.1: Enabling Hibernate Caching in WildFly
................................................................................................. 24
Chapter 10: Association Mappings between Entities
................................................................................ 25
Section 10.1: One to many association using XML
................................................................................................... 25
Section 10.2: OneToMany association
....................................................................................................................... 27
Chapter 11: Lazy Loading vs Eager Loading
................................................................................................. 28
Section 11.1: Lazy Loading vs Eager Loading
............................................................................................................ 28
Section 11.2: Scope
....................................................................................................................................................... 29
Chapter 12: Enable/Disable SQL log
................................................................................................................. 31
Section 12.1: Using a logging config file
.................................................................................................................... 31
Section 12.2: Using Hibernate properties
.................................................................................................................. 31
Section 12.3: Enable/Disable SQL log in debug
........................................................................................................ 31
Chapter 13: Hibernate and JPA
............................................................................................................................ 33
Section 13.1: Relationship between Hibernate and JPA
........................................................................................... 33
Chapter 14: Performance tuning
........................................................................................................................ 34
Section 14.1: Use composition instead of inheritance
.............................................................................................. 34
Credits
.............................................................................................................................................................................. 35
You may also like
........................................................................................................................................................ 36
About
Please feel free to share this PDF with anyone for free,
latest version of this book can be downloaded from:
https://goalkicker.com/HibernateBook
This
Hibernate Notes for Professionals
book is compiled from
Stack Overflow
Documentation,
the content is written by the beautiful people at Stack Overflow.
Text content is released under Creative Commons BY-SA, see credits at the end
of this book whom contributed to the various chapters. Images may be copyright
of their respective owners unless otherwise specified
This is an unofficial free book created for educational purposes and is not
affiliated with official Hibernate group(s) or company(s) nor Stack Overflow. All
trademarks and registered trademarks are the property of their respective
company owners
The information presented in this book is not guaranteed to be correct nor
accurate, use at your own risk
Please send feedback and corrections to
web@petercv.com
GoalKicker.com – Hibernate Notes for Professionals
1
Chapter 1: Getting started with Hibernate
Version
Documentation Link
Release Date
4.2.0
http://hibernate.org/orm/documentation/4.2/
2013-03-01
4.3.0
5.0.0
http://hibernate.org/orm/documentation/4.3/
2013-12-01
http://hibernate.org/orm/documentation/5.0/
2015-09-01
Section 1.1: Using XML Configuration to set up Hibernate
I create a file called
database-servlet.xml
somewhere on the classpath.
Initially your config file will look like this:
<?xml
version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/jdbc
http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">
</beans>
You'll notice I imported the
tx
and
jdbc
Spring namespaces. This is because we are going to use them quite heavily
in this config file.
First thing you want to do is enable annotation based transaction management (
@Transactional
). The main reason
that people use Hibernate in Spring is because Spring will manage all your transactions for you. Add the following
line to your configuration file:
<tx:annotation-driven />
We need to create a data source. The data source is basically the database that Hibernate is going to use to persist
your objects. Generally one transaction manager will have one data source. If you want Hibernate to talk to multiple
data sources then you have multiple transaction managers.
<bean
id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property
name="driverClassName" value=""
/>
<property
name="url" value=""
/>
<property
name="username" value=""
/>
<property
name="password" value=""
/>
</bean>
The class of this bean can be anything that implements
javax.sql.DataSource
so you could write your own. This
example class is provided by Spring, but doesn't have its own thread pool. A popular alternative is the Apache
Commons
org.apache.commons.dbcp.BasicDataSource
, but there are many others. I'll explain each of the
properties below:
driverClassName:
The path to your JDBC driver. This is a
database specific
JAR that should be available on
GoalKicker.com – Hibernate Notes for Professionals
2
Zgłoś jeśli naruszono regulamin