1 / 10

Hibernatification!

Hibernatification!. Roadmap for Migrating from Plain Old SQL on JDBC to JPA on Hibernate. Duke Banerjee Senior Developer, DrillingInfo.com. About Me. Senior Developer at DrillingInfo since September Been in the industry for almost ten years

Download Presentation

Hibernatification!

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Hibernatification! Roadmap for Migrating from Plain Old SQL on JDBC to JPA on Hibernate Duke Banerjee Senior Developer, DrillingInfo.com

  2. About Me • Senior Developer at DrillingInfo since September • Been in the industry for almost ten years • Been doing Java development for the past five years

  3. About DrillingInfo • Subscription based website which aggregates and organizes state regulatory data and other data in an easy-to-use format. • We employ many different loaders which download data from state agencies and from other sources. • We have a huge database (10 GBs of data at last count?) of information which we are always updating and querying. Always looking for ways of improving performance, which lead us to Hibernate.

  4. Overview • In this talk, I will talk about our experiences migrating an application from plain old SQL on JDBC to Hibernate on JPA. • Topics covered: • Introduction to the technologies used • Refactoring and design patterns (DAO) • Generating entity classes from the schema • Converting SQL queries to JPQL • Introduction to Guice framework • Impact of Migrating to JPA/Hibernate

  5. What is Hibernate? • Hibernate is an ORM (Object Relational Mapping) tool. • Maps the Relational Model in the database to the Object Model in Java. • Tables are mapped to classes. • Columns are mapped to JavaBean properties. • Replaces SQL with HQL, a database-independent query language that navigates object relations rather than table relations.

  6. What is JPA? • JPA is the Java Persistence API, the entity persistence model for EJB 3.0 • Standardized persistence framework which is implemented by Hibernate (or TopLink, Cayenne, etc.) • JPA Annotations and persistence.xml provide vendor independent configuration • EntityManager provides vendor independent access to persistence • Replaces vendor specific query languages (HQL) with standard (JPQL)

  7. Why JPA? • JPA is the standard, and standards are good! • Using JPA does not tie you to Hibernate. • JPA gives you most of the features of plain old Hibernate, except: • No criteria queries in JPA 2.0  • Criteria query is a neat feature of Hibernate that constructs query using Java-based combinators instead of alternate query language, getting the benefit of IntelliSense and Eclipse’s refactoring tools. • JPA doesn’t have Hibernate’sDeleteOrphan cascade type • Delete Orphan is a useful annotation that directs Hibernate to deletes entities in a collection if the parent is deleted, preventing orphaning. • JPA doesn’t have an equivalent to Hibernate’sScrollableResults • But, all of these features are accessible to an otherwise fully JPA application!

  8. What is Guice? • Guice is a very lightweight dependency injection framework. • Simpler to set up than a full blown IoC container like Spring. • Guice is focused on IoC, Spring has become an ecosystem. Good or bad, you decide! • Guice is XML free, configured in regular Java code and annotations. Though Spring 3 is advertised to do this as well.

  9. On to the Code! • Now that we’ve laid the groundwork, let’s see this in action! • I’ve create a very simple Wicket application which demonstrates the principles introduced so far and a migration strategy: • Step 1: A basic JDBC and SQL driven web-app • Step 2: Migrating to Guice-driven DAOs • Step 3: Migrating from JDBC to JPA JPA

  10. What was the Point? • Substantially reduces the amount of data access code, partly generated but largely managed by Hibernate. In our case, this is a savings of thousands of lines of code. • Better performance. Dirty checks and versioning by Hibernate reduces the amount of data that has to be persisted, code that we were writing ourselves. • IOHO, it’s just a better programming model!

More Related