n 1 select issues with hibernate
play

N+1 Select Issues with Hibernate Part 2: Solving n+1 select issues - PowerPoint PPT Presentation

How to find and fix N+1 Select Issues with Hibernate Part 2: Solving n+1 select issues with @NamedEntityGraphs www.thoughts-on-java.org Course Structure Part 1: What is the n+1 select issue? How to find it in your project?


  1. How to find and fix N+1 Select Issues with Hibernate Part 2: Solving n+1 select issues with @NamedEntityGraphs www.thoughts-on-java.org

  2. Course Structure • Part 1: • What is the n+1 select issue? • How to find it in your project? • Part 2: • Solving n+1 select issues with @NamedEntityGraphs • Part 3: • Solving n+1 select issues with dynamic EntityGraphs www.thoughts-on-java.org

  3. Application www.thoughts-on-java.org

  4. @NamedEntityGraph www.thoughts-on-java.org

  5. @NamedEntityGraph • Introduced in JPA 2.1 • Declaratively defines a graph of entities which will be loaded • Graph is query independent www.thoughts-on-java.org

  6. @NamedEntityGraph • Define a simple @NamedEntityGraph @NamedEntityGraph( name = "graph.AuthorBooksReviews", attributeNodes = @NamedAttributeNode(value = "books") ) www.thoughts-on-java.org

  7. @NamedEntityGraph • Define a multi-level @NamedEntityGraph @NamedEntityGraph( name = "graph.AuthorBooksReviews", attributeNodes = @NamedAttributeNode(value = "books", subgraph = "books"), subgraphs = @NamedSubgraph( name = "books", attributeNodes = @NamedAttributeNode("reviews") ) ) www.thoughts-on-java.org

  8. @NamedEntityGraph • Provide entity graph as a hint EntityGraph graph = this.em.getEntityGraph("graph.AuthorBooks"); this.em.createQuery("SELECT DISTINCT a FROM Author a") .setHint("javax.persistence.loadgraph", graph); www.thoughts-on-java.org

  9. @NamedEntityGraph • Fetch graph • Eager loading for all elements of the graph • Lazy loading for all other attributes • Load graph • Eager loading for all elements of the graph • Loads all other attributes with their defined FetchType • Hib iber erna nate te alwa always ys uses es a a lo load ad grap aph • HHH-8776 www.thoughts-on-java.org

  10. @NamedEntityGraph • Advantages • Query specific EAGER loading • Definition of the graph is independent of the query • Disadvantages • Creates cartesian product www.thoughts-on-java.org

  11. Want to learn how to identify and fix other Hibernate performance issues? Join my Hib Hiber erna nate te Per erforma formanc nce e Tuni ning ng On Online ine Train ining: ing: www.thoughts-on-java.org/course-hibernate- performance-tuning

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend