Patrycja Wegrzynowicz is Founder and CTO at Yon Labs and Yon Consulting. There, she shapes the future direction of technological research in software as well as acts as a chief architect and consultant on the projects from the field of automated software engineering, domain names, and Internet security. She is also associated with Warsaw University of Technology, where she serves as Technical Manager of Passim, an intelligent search engine. She is a regular speaker at top academic (e.g., OOPSLA, ASE) as well as technical conferences (e.g., JavaOne, Devoxx, JavaZone). Patrycja holds a master degree in Computer Science and is currently finalizing her PhD at University of Warsaw. Her research interests are focused on architectural and design patterns and anti-patterns along with automated software engineering, particularly static and dynamic analysis techniques to support program verification, comprehension, and optimization.
Patterns and Anti-Patterns in Hibernate
Hibernate is the most popular object-relational mapping library for Java, 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 related 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, which illustrate transactional and performance anti-patterns in hibernate.
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 Yonita, a static analysis tool that helps in automated discovery of concurrency-related issues with hibernate and database transactions.
Upon completion of this presentation, attendees should better understand the potential hibernate transactional and performance 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.
The talk is a revised version of the talks presented at Jazoon 2010, Strange Loop 2010, and TheServerSide Java Symposium 2011.
Static Analysis in Search for Performance Anti-Patterns
This talk presents several performance anti-patterns along with a static analysis tool to discover them. The identified anti-patterns relate to inefficient call and data flows in the context of web-programming, communication, and data manipulation. To automatically discover these issues, we use Yonita, a semantic enginge focused on capturing the behavior of a program. The intended audience includes experienced software engineers interested in code optimization.
The key points to learn:
Performance anti-patterns related to call and data flows
Inefficient constructs of web-frameworks, communication between components, and data manipulation
Code queries useful to find performance anti-patterns
This talk is a revised version of the talks presented at JavaOne 2010, JavaZone 2010, and TheServerSide Java Symposium 2011.