CHAIR FOR DATABASES AND INFORMATION SYSTEMS
Martin Braun - Bachelor Thesis presentation
PROF. DR.-ING. STEFAN JABLONSKI DR. BERNHARD VOLZ
THURSDAY, 24 September 2015
Integration of JPA-conform ORMImplementations in Hibernate Search
CONTACT
Martin Braun E-Mail
[email protected]
© 2015 - MARTIN BRAUN - APPLIED COMPUTER SCIENCE IV, UNIVERSITY OF BAYREUTH
2
CHAIR FOR DATABASES AND INFORMATION SYSTEMS
1. Introduction
PROF. DR.-ING. STEFAN JABLONSKI DR. BERNHARD VOLZ
-
Abstraction/standardization is key in the software world (Java Enterprise)
-
Database access is standardized -
Object Relational Mappers (ORM) Java Persistence API (JPA) -
-
Special features of different JPA implementations -
THURSDAY, 24 SEPTEMBER 2015 CONTACT
Martin Braun E-Mail
[email protected]
Hibernate ORM (Red Hat) EclipseLink (Eclipse Foundation) OpenJPA (Apache Foundation)
e.g. Hibernate Search
© 2015 - MARTIN BRAUN - APPLIED COMPUTER SCIENCE IV, UNIVERSITY OF BAYREUTH
3
CHAIR FOR DATABASES AND INFORMATION SYSTEMS
1. Introduction
PROF. DR.-ING. STEFAN JABLONSKI DR. BERNHARD VOLZ
What is Hibernate Search? -
Lucene based fulltext search engine on top of Hibernate ORM -
-
indexes and queries managed JPA objects keeps index up-to-date
Fulltext search in a regular RDBMS: SELECT book.id, book.name FROM book WHERE book.name LIKE %hobbit%;
THURSDAY, 24 SEPTEMBER 2015 CONTACT
Martin Braun E-Mail
[email protected]
Hibernate Search: more complex queries and index options -
fuzzy queries regular expression queries stemming (language specific) comprehensive synonym support
orignal hits original [Ll]ucene hits Lucene, lucene worker -> work book -> essay, album, novel
© 2015 - MARTIN BRAUN - APPLIED COMPUTER SCIENCE IV, UNIVERSITY OF BAYREUTH
4
CHAIR FOR DATABASES AND INFORMATION SYSTEMS
1. Introduction
PROF. DR.-ING. STEFAN JABLONSKI DR. BERNHARD VOLZ
Hibernate Search with Hibernate ORM:
Hibernate ORM
notifies about changes > < retrieves objects from
controls access to >
Hibernate Search
indexes objects >
THURSDAY, 24 SEPTEMBER 2015
Database
CONTACT
Martin Braun E-Mail
[email protected]
Lucene Index
© 2015 - MARTIN BRAUN - APPLIED COMPUTER SCIENCE IV, UNIVERSITY OF BAYREUTH
5
CHAIR FOR DATABASES AND INFORMATION SYSTEMS
1. Introduction
PROF. DR.-ING. STEFAN JABLONSKI DR. BERNHARD VOLZ
Hibernate Search with other JPA providers:
Non Hibernate JPA Provider
controls access to >
Hibernate Search
indexes objects >
THURSDAY, 24 SEPTEMBER 2015
Database
CONTACT
Martin Braun E-Mail
[email protected]
Lucene Index
© 2015 - MARTIN BRAUN - APPLIED COMPUTER SCIENCE IV, UNIVERSITY OF BAYREUTH
6
CHAIR FOR DATABASES AND INFORMATION SYSTEMS
1. Introduction
PROF. DR.-ING. STEFAN JABLONSKI DR. BERNHARD VOLZ
Why a generic Hibernate Search? -
Other search solutions are not integrated with JPA: -
-
lack of integration results in: -
-
manual conversion into index objects required no automatic index updating no JPA objects as return values in queries
No new generic alternative needed: -
THURSDAY, 24 SEPTEMBER 2015
native Lucene ElasticSearch / Solr
existing JPA based interfaces in Hibernate Search backend (hibernate-search-engine) is integration agnostic
CONTACT
Martin Braun E-Mail
[email protected]
-
This approach is backed by the Hibernate team
© 2015 - MARTIN BRAUN - APPLIED COMPUTER SCIENCE IV, UNIVERSITY OF BAYREUTH
7
CHAIR FOR DATABASES AND INFORMATION SYSTEMS
2. Challenges
PROF. DR.-ING. STEFAN JABLONSKI DR. BERNHARD VOLZ
-
Hibernate Search Standalone -
-
JPA integration -
THURSDAY, 24 SEPTEMBER 2015
abstraction layer on-top of the low-level API of Hibernate Search’s engine
integration of the standalone with generic JPA re-use the interfaces from hibernate-search-orm
CONTACT
Martin Braun E-Mail
[email protected]
-
Automatic Updating Mechanism
© 2015 - MARTIN BRAUN - APPLIED COMPUTER SCIENCE IV, UNIVERSITY OF BAYREUTH
8
CHAIR FOR DATABASES AND INFORMATION SYSTEMS PROF. DR.-ING. STEFAN JABLONSKI DR. BERNHARD VOLZ
THURSDAY, 24 SEPTEMBER 2015 CONTACT
Martin Braun E-Mail
[email protected]
3. Standalone Version of Hibernate Search
© 2015 - MARTIN BRAUN - APPLIED COMPUTER SCIENCE IV, UNIVERSITY OF BAYREUTH
9
CHAIR FOR DATABASES AND INFORMATION SYSTEMS PROF. DR.-ING. STEFAN JABLONSKI DR. BERNHARD VOLZ
THURSDAY, 24 SEPTEMBER 2015 CONTACT
Martin Braun E-Mail
[email protected]
3. Standalone Version of Hibernate Search
10
CHAIR FOR DATABASES AND INFORMATION SYSTEMS PROF. DR.-ING. STEFAN JABLONSKI DR. BERNHARD VOLZ
THURSDAY, 24 SEPTEMBER 2015 CONTACT
Martin Braun E-Mail
[email protected]
3. Standalone Version of Hibernate Search
© 2015 - MARTIN BRAUN - APPLIED COMPUTER SCIENCE IV, UNIVERSITY OF BAYREUTH
11
CHAIR FOR DATABASES AND INFORMATION SYSTEMS PROF. DR.-ING. STEFAN JABLONSKI DR. BERNHARD VOLZ
THURSDAY, 24 SEPTEMBER 2015 CONTACT
Martin Braun E-Mail
[email protected]
3. Standalone Version of Hibernate Search
© 2015 - MARTIN BRAUN - APPLIED COMPUTER SCIENCE IV, UNIVERSITY OF BAYREUTH
12
CHAIR FOR DATABASES AND INFORMATION SYSTEMS PROF. DR.-ING. STEFAN JABLONSKI DR. BERNHARD VOLZ
THURSDAY, 24 SEPTEMBER 2015 CONTACT
Martin Braun E-Mail
[email protected]
4. JPA integration of the standalone version
© 2015 - MARTIN BRAUN - APPLIED COMPUTER SCIENCE IV, UNIVERSITY OF BAYREUTH
© 2015 - MARTIN BRAUN - APPLIED COMPUTER SCIENCE IV, UNIVERSITY OF BAYREUTH
13
CHAIR FOR DATABASES AND INFORMATION SYSTEMS
5. Automatic Index Updating
PROF. DR.-ING. STEFAN JABLONSKI DR. BERNHARD VOLZ
-
Index must be kept up-to-date when database changes
-
Manual index updating is hard to maintain
-
Hibernate Search ORM: -
THURSDAY, 24 SEPTEMBER 2015 CONTACT
Martin Braun E-Mail
[email protected]
integrates with Hibernate ORMs event model does not work with direct database changes (SQL on DB, custom queries)
Candidates for Hibernate Search GenericJPA: -
1. JPA event based model 2. Native event based model similar to Hibernate Search ORM 3. Trigger based approach
synchronous synchronous asynchronous
14
CHAIR FOR DATABASES AND INFORMATION SYSTEMS
© 2015 - MARTIN BRAUN - APPLIED COMPUTER SCIENCE IV, UNIVERSITY OF BAYREUTH
5. Automatic Index Updating - JPA events
PROF. DR.-ING. STEFAN JABLONSKI DR. BERNHARD VOLZ
Problems: -
THURSDAY, 24 SEPTEMBER 2015 CONTACT
Martin Braun E-Mail
[email protected]
JPA providers handle events differently
15
CHAIR FOR DATABASES AND INFORMATION SYSTEMS
© 2015 - MARTIN BRAUN - APPLIED COMPUTER SCIENCE IV, UNIVERSITY OF BAYREUTH
5. Automatic Index Updating - JPA events
PROF. DR.-ING. STEFAN JABLONSKI DR. BERNHARD VOLZ
Problems: -
JPA providers handle events differently Events are triggered on flush
→ unusable for index updating
THURSDAY, 24 SEPTEMBER 2015 CONTACT
Martin Braun E-Mail
[email protected]
© 2015 - MARTIN BRAUN - APPLIED COMPUTER SCIENCE IV, UNIVERSITY OF BAYREUTH
16
CHAIR FOR DATABASES AND INFORMATION SYSTEMS
5. Automatic Index Updating - Native Events
PROF. DR.-ING. STEFAN JABLONSKI DR. BERNHARD VOLZ
-
All big JPA implementations (Hibernate ORM, EclipseLink, OpenJPA) have a native Listener mechanism
-
Native update mechanisms in Hibernate Search GenericJPA: -
-
Hibernate ORM EclipseLink
Same behaviour as Hibernate Search ORM’s mechanism → do not work with direct database changes (SQL on DB, custom queries)
THURSDAY, 24 SEPTEMBER 2015 CONTACT
Martin Braun E-Mail
[email protected]
-
Implementation is straight-forward, not part of thesis
© 2015 - MARTIN BRAUN - APPLIED COMPUTER SCIENCE IV, UNIVERSITY OF BAYREUTH
17
CHAIR FOR DATABASES AND INFORMATION SYSTEMS
5. Automatic Index Updating - Triggers
PROF. DR.-ING. STEFAN JABLONSKI DR. BERNHARD VOLZ
-
Triggers are supported by most RDBMSs
-
Not standardized, code abstraction needed for generation
-
Listen for changes directly in the database, write into auxiliary tables -
THURSDAY, 24 SEPTEMBER 2015 CONTACT
Martin Braun E-Mail
[email protected]
changes with native SQL are recognized support for legacy applications
18
CHAIR FOR DATABASES AND INFORMATION SYSTEMS PROF. DR.-ING. STEFAN JABLONSKI DR. BERNHARD VOLZ
THURSDAY, 24 SEPTEMBER 2015 CONTACT
Martin Braun E-Mail
[email protected]
5. Automatic Index Updating - Triggers
© 2015 - MARTIN BRAUN - APPLIED COMPUTER SCIENCE IV, UNIVERSITY OF BAYREUTH
19
CHAIR FOR DATABASES AND INFORMATION SYSTEMS PROF. DR.-ING. STEFAN JABLONSKI DR. BERNHARD VOLZ
THURSDAY, 24 SEPTEMBER 2015 CONTACT
Martin Braun E-Mail
[email protected]
5. Automatic Index Updating - Triggers
© 2015 - MARTIN BRAUN - APPLIED COMPUTER SCIENCE IV, UNIVERSITY OF BAYREUTH
20
CHAIR FOR DATABASES AND INFORMATION SYSTEMS PROF. DR.-ING. STEFAN JABLONSKI DR. BERNHARD VOLZ
THURSDAY, 24 SEPTEMBER 2015 CONTACT
Martin Braun E-Mail
[email protected]
6. Usage Example
© 2015 - MARTIN BRAUN - APPLIED COMPUTER SCIENCE IV, UNIVERSITY OF BAYREUTH
21
CHAIR FOR DATABASES AND INFORMATION SYSTEMS
7. Current situation
PROF. DR.-ING. STEFAN JABLONSKI DR. BERNHARD VOLZ
Hibernate Search without Hibernate ORM:
THURSDAY, 24 SEPTEMBER 2015 CONTACT
Martin Braun E-Mail
[email protected]
© 2015 - MARTIN BRAUN - APPLIED COMPUTER SCIENCE IV, UNIVERSITY OF BAYREUTH
© 2015 - MARTIN BRAUN - APPLIED COMPUTER SCIENCE IV, UNIVERSITY OF BAYREUTH
22
CHAIR FOR DATABASES AND INFORMATION SYSTEMS
8. Outlook
PROF. DR.-ING. STEFAN JABLONSKI DR. BERNHARD VOLZ
THURSDAY, 24 SEPTEMBER 2015 CONTACT
Martin Braun E-Mail
[email protected]
-
Stable proof of concept
-
Source-code on GitHub: https://github.com/Hotware/Hibernate-Search-GenericJPA
-
Improvements in the trigger updating mechanism
-
Merge with core Hibernate Search in November 2015
23
CHAIR FOR DATABASES AND INFORMATION SYSTEMS PROF. DR.-ING. STEFAN JABLONSKI DR. BERNHARD VOLZ
THURSDAY, 24 SEPTEMBER 2015 CONTACT
Martin Braun E-Mail
[email protected]
© 2015 - MARTIN BRAUN - APPLIED COMPUTER SCIENCE IV, UNIVERSITY OF BAYREUTH
24
CHAIR FOR DATABASES AND INFORMATION SYSTEMS PROF. DR.-ING. STEFAN JABLONSKI DR. BERNHARD VOLZ
THURSDAY, 24 SEPTEMBER 2015 CONTACT
Martin Braun E-Mail
[email protected]
Lucene Basics
© 2015 - MARTIN BRAUN - APPLIED COMPUTER SCIENCE IV, UNIVERSITY OF BAYREUTH