Best Bugs, Best Practices, and Best Tools for Hibernate
Hibernate is the most popular object-relational mapping library for Java (and for most other JVM-based languages), providing a framework for mapping an object-oriented domain model to a traditional relational database. An application of hibernate to simple models is straightforward and almost effortless. However, in case of more complex models we usually run into some issues relating to performance or correctness.
We will show several flaws in the demo from 'Java Persistence with Hibernate' - CaveatEmptor (yes, it has several bugs including a serious locking-related issue!) and other open-source projects.
The hibernate-related flaws will be accompanied by alternative solutions and best practices, which help to improve performance and quality of both, database and object-oriented, models. We will explore patterns and practices mainly in the context of object-oriented model, specifically how to meet object-oriented principles, yet to ensure correctness and efficiency of hibernate mappings.
Additionally, we will present a free online tool that helps in automated discovery of concurrency-related issues with hibernate and database transactions. The tool uses static analysis to analyze the bytecode of any JVM-based application and to find bugs related to hibernate.
Upon completion of this presentation, attendees should better understand the potential hibernate issues along with patterns to use hibernate in a correct and elegant way. Moreover, attendees will learn how to automatically discover a certain class of hibernate-related bugs.