<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"> 
        <base href="https://hibernate.atlassian.net"> 
        <title>Message Title</title> 
    </head> 
    <body class="jira" style="color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 1.429"> 
        <table id="background-table" cellpadding="0" cellspacing="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; background-color: #f5f5f5; border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0" bgcolor="#f5f5f5"> 
            <!-- header here --> 
            <tbody>
                <tr> 
                    <td id="header-pattern-container" style="padding: 0; border-collapse: collapse; padding: 10px 20px"> 
                        <table id="header-pattern" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0"> 
                            <tbody>
                                <tr> 
                                    <td id="header-avatar-image-container" valign="top" style="padding: 0; border-collapse: collapse; vertical-align: top; width: 32px; padding-right: 8px" width="32"> <img id="header-avatar-image" class="image_fix" src="https://avatar-cdn.atlassian.com/e9760ae831cb65cf1b7453c98701aae1?s=48&amp;d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2Fe9760ae831cb65cf1b7453c98701aae1%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue" height="32" width="32" border="0" style="border-radius: 3px; vertical-align: top"> </td> 
                                    <td id="header-text-container" valign="middle" style="padding: 0; border-collapse: collapse; vertical-align: middle; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 1px"> <a class="user-hover" rel="mincong" id="email_mincong" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=mincong" style="color:#6c797f;; color: #3b73af; text-decoration: none">Mincong Huang</a> <strong>commented</strong> on <a href="https://hibernate.atlassian.net/browse/HSEARCH-2706" style="color: #3b73af; text-decoration: none"><img src="cid:jira-generated-image-avatar-7dd9cf7b-2d32-4efc-ac58-00b3036cb7a9" height="16" width="16" border="0" align="absmiddle" alt="Sub-task"> HSEARCH-2706</a> </td> 
                                </tr> 
                            </tbody>
                        </table> </td> 
                </tr> 
                <tr> 
                    <td id="email-content-container" style="padding: 0; border-collapse: collapse; padding: 0 20px"> 
                        <table id="email-content-table" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; border-spacing: 0; border-collapse: separate"> 
                            <tbody>
                                <tr> 
                                    <!-- there needs to be content in the cell for it to render in some clients --> 
                                    <td class="email-content-rounded-top mobile-expand" style="padding: 0; border-collapse: collapse; color: #ffffff; padding: 0 15px 0 16px; height: 15px; background-color: #ffffff; border-left: 1px solid #cccccc; border-top: 1px solid #cccccc; border-right: 1px solid #cccccc; border-bottom: 0; border-top-right-radius: 5px; border-top-left-radius: 5px; height: 10px; line-height: 10px; padding: 0 15px 0 16px; mso-line-height-rule: exactly" height="10" bgcolor="#ffffff">&nbsp;</td> 
                                </tr> 
                                <tr> 
                                    <td class="email-content-main mobile-expand " style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff" bgcolor="#ffffff"> 
                                        <table class="page-title-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0"> 
                                            <tbody>
                                                <tr> 
                                                    <td style="vertical-align: top;; padding: 0; border-collapse: collapse; padding-right: 5px; font-size: 20px; line-height: 30px; mso-line-height-rule: exactly" class="page-title-pattern-header-container"> <span class="page-title-pattern-header" style="font-family: Arial, sans-serif; padding: 0; font-size: 20px; line-height: 30px; mso-text-raise: 2px; mso-line-height-rule: exactly; vertical-align: middle"> <a href="https://hibernate.atlassian.net/browse/HSEARCH-2706" style="color: #3b73af; text-decoration: none">Re: JSR-352: Decide whether we should use the proprietary Hibernate APIs or JPA, but don't use both</a> </span> </td> 
                                                </tr> 
                                            </tbody>
                                        </table> </td> 
                                </tr> 
                                <tr> 
                                    <td id="text-paragraph-pattern-top" class="email-content-main mobile-expand  comment-top-pattern" style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff; border-bottom: none; padding-bottom: 0" bgcolor="#ffffff"> 
                                        <table class="text-paragraph-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 2px"> 
                                            <tbody>
                                                <tr> 
                                                    <td class="text-paragraph-pattern-container mobile-resize-text " style="padding: 0; border-collapse: collapse; padding: 0 0 10px"> <p style="margin: 10px 0 0; margin-top: 0">+1 for not using both APIs.</p> 
                                                        <blockquote style="margin: 10px 0 0; border-left: 1px solid #cccccc; color: #707070; margin-left: 19px; padding: 10px 20px"> 
                                                            <p style="margin: 10px 0 0; margin-top: 0">I'd be tempted to use JPA as a main API, but we have to check what it means regarding HQL and Criteria (in particular).</p>
                                                        </blockquote> <p style="margin: 10px 0 0">Here're the major changes that I see so far in the JSR-352 integration:</p> 
                                                        <div class="table-wrap"> 
                                                            <table class="confluenceTable" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; border-collapse: collapse; margin: 5px 0 5px 2px; width: auto">
                                                                <tbody> 
                                                                    <tr> 
                                                                        <th class="confluenceTh" style="border: 1px solid #cccccc; background: #f5f5f5; padding: 3px 4px; text-align: center; font: bold 14px/20px Arial, sans-serif"> Hibernate API </th> 
                                                                        <th class="confluenceTh" style="border: 1px solid #cccccc; background: #f5f5f5; padding: 3px 4px; text-align: center; font: bold 14px/20px Arial, sans-serif"> Java Persistence API </th> 
                                                                    </tr> 
                                                                    <tr> 
                                                                        <td class="confluenceTd" style="padding: 0; border-collapse: collapse; border: 1px solid #cccccc; padding: 3px 4px; font: normal 14px/20px Arial, sans-serif"> <tt>org.hibernate.Criteria</tt> </td> 
                                                                        <td class="confluenceTd" style="padding: 0; border-collapse: collapse; border: 1px solid #cccccc; padding: 3px 4px; font: normal 14px/20px Arial, sans-serif"> <tt>javax.persistence.criteria.CriteriaBuilder</tt> </td> 
                                                                    </tr> 
                                                                    <tr> 
                                                                        <td class="confluenceTd" style="padding: 0; border-collapse: collapse; border: 1px solid #cccccc; padding: 3px 4px; font: normal 14px/20px Arial, sans-serif"> <tt>org.hibernate.Criterion</tt> </td> 
                                                                        <td class="confluenceTd" style="padding: 0; border-collapse: collapse; border: 1px solid #cccccc; padding: 3px 4px; font: normal 14px/20px Arial, sans-serif"> <tt>javax.persistence.criteria.Predecate</tt> </td> 
                                                                    </tr> 
                                                                    <tr> 
                                                                        <td class="confluenceTd" style="padding: 0; border-collapse: collapse; border: 1px solid #cccccc; padding: 3px 4px; font: normal 14px/20px Arial, sans-serif"> <tt>org.hibernate.criterion.Order</tt> </td> 
                                                                        <td class="confluenceTd" style="padding: 0; border-collapse: collapse; border: 1px solid #cccccc; padding: 3px 4px; font: normal 14px/20px Arial, sans-serif"> <tt>javax.persistence.criteria.Order</tt> </td> 
                                                                    </tr> 
                                                                    <tr> 
                                                                        <td class="confluenceTd" style="padding: 0; border-collapse: collapse; border: 1px solid #cccccc; padding: 3px 4px; font: normal 14px/20px Arial, sans-serif"> <tt>org.hibernate.Session</tt> </td> 
                                                                        <td class="confluenceTd" style="padding: 0; border-collapse: collapse; border: 1px solid #cccccc; padding: 3px 4px; font: normal 14px/20px Arial, sans-serif"> <tt>javax.persistence.EntityManager</tt> </td> 
                                                                    </tr> 
                                                                    <tr> 
                                                                        <td class="confluenceTd" style="padding: 0; border-collapse: collapse; border: 1px solid #cccccc; padding: 3px 4px; font: normal 14px/20px Arial, sans-serif"> <tt>org.hibernate.StatelessSession</tt> </td> 
                                                                        <td class="confluenceTd" style="padding: 0; border-collapse: collapse; border: 1px solid #cccccc; padding: 3px 4px; font: normal 14px/20px Arial, sans-serif"> <tt>javax.persistence.EntityManager</tt> (1) </td> 
                                                                    </tr> 
                                                                    <tr> 
                                                                        <td class="confluenceTd" style="padding: 0; border-collapse: collapse; border: 1px solid #cccccc; padding: 3px 4px; font: normal 14px/20px Arial, sans-serif"> <tt>org.hibernate.SessionFactory</tt> </td> 
                                                                        <td class="confluenceTd" style="padding: 0; border-collapse: collapse; border: 1px solid #cccccc; padding: 3px 4px; font: normal 14px/20px Arial, sans-serif"> <tt>javax.persistence.EntityManagerFactory</tt> </td> 
                                                                    </tr> 
                                                                    <tr> 
                                                                        <td class="confluenceTd" style="padding: 0; border-collapse: collapse; border: 1px solid #cccccc; padding: 3px 4px; font: normal 14px/20px Arial, sans-serif"> <tt>org.hibernate.query.Query</tt> </td> 
                                                                        <td class="confluenceTd" style="padding: 0; border-collapse: collapse; border: 1px solid #cccccc; padding: 3px 4px; font: normal 14px/20px Arial, sans-serif"> <tt>javax.persistence.Query</tt> </td> 
                                                                    </tr> 
                                                                </tbody>
                                                            </table> 
                                                        </div> <p style="margin: 10px 0 0">(1) However, I'm not sure about this one. Our current architecture uses stateless session to handle the ID fetching and entity reading. It seems that there's no equivalent of stateless session in JPA, so the L1 cache cannot be disabled, which might be a big problem in term of performance. </p> <p style="margin: 10px 0 0">Other problems:</p> 
                                                        <ul> 
                                                            <li>JPA has more type check, which leads to lot of changes in the criteria, query building. Here's some example of the types: 
                                                                <ul> 
                                                                    <li><tt>X</tt> stands for the represented entity type</li> 
                                                                    <li><tt>T</tt> stands for the represented attribute</li> 
                                                                    <li><tt>Y</tt> stands for the represented expression</li> 
                                                                </ul> </li> 
                                                            <li>Scrollable result does not have equivalent in JPA</li> 
                                                            <li>Multi-tenancy: Not sure how to handle it in JPA</li> 
                                                            <li>Use <tt>FullTextEntityManager</tt> instead of <tt>FullTextSession</tt> in the test.</li> 
                                                        </ul> </td> 
                                                </tr> 
                                            </tbody>
                                        </table> </td> 
                                </tr> 
                                <tr> 
                                    <td class="email-content-main mobile-expand " style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff" bgcolor="#ffffff"> <script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "EmailMessage",
  "description": "View Issue",
  "potentialAction": {
    "@type": "ViewAction",
        "target": "https://hibernate.atlassian.net/browse/HSEARCH-2706?inbox=true&focusedCommentId=97107&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-97107",
    "name": "View Comment"
      },
  "publisher": {
    "@type": "Organization",
    "name": "Atlassian",
    "url": "https://www.atlassian.com"
  }
}
</script> 
                                        <table id="actions-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 1px"> 
                                            <tbody>
                                                <tr> 
                                                    <td id="actions-pattern-container" valign="middle" style="padding: 0; border-collapse: collapse; padding: 10px 0 10px 24px; vertical-align: middle; padding-left: 0"> 
                                                        <table align="left" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0"> 
                                                            <tbody>
                                                                <tr> 
                                                                    <td class="actions-pattern-action-icon-container" style="padding: 0; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 0; vertical-align: middle"> <a href="https://hibernate.atlassian.net/browse/HSEARCH-2706#add-comment" target="_blank" title="Add Comment" style="color: #3b73af; text-decoration: none"> <img class="actions-pattern-action-icon-image" src="cid:jira-generated-image-static-comment-icon-a2a7d104-a5f2-41cc-b05f-e57fd3fcfa4b" alt="Add Comment" title="Add Comment" height="16" width="16" border="0" style="vertical-align: middle"> </a> </td> 
                                                                    <td class="actions-pattern-action-text-container" style="padding: 0; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 4px; padding-left: 5px"> <a href="https://hibernate.atlassian.net/browse/HSEARCH-2706#add-comment" target="_blank" title="Add Comment" style="color: #3b73af; text-decoration: none">Add Comment</a> </td> 
                                                                </tr> 
                                                            </tbody>
                                                        </table> </td> 
                                                </tr> 
                                            </tbody>
                                        </table> </td> 
                                </tr> 
                                <!-- there needs to be content in the cell for it to render in some clients --> 
                                <tr> 
                                    <td class="email-content-rounded-bottom mobile-expand" style="padding: 0; border-collapse: collapse; color: #ffffff; padding: 0 15px 0 16px; height: 5px; line-height: 5px; background-color: #ffffff; border-top: 0; border-left: 1px solid #cccccc; border-bottom: 1px solid #cccccc; border-right: 1px solid #cccccc; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; mso-line-height-rule: exactly" height="5" bgcolor="#ffffff">&nbsp;</td> 
                                </tr> 
                            </tbody>
                        </table> </td> 
                </tr> 
                <tr> 
                    <td id="footer-pattern" style="padding: 0; border-collapse: collapse; padding: 12px 20px"> 
                        <table id="footer-pattern-container" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0"> 
                            <tbody>
                                <tr> 
                                    <td id="footer-pattern-mobile-links" class="mobile-resize-text" width="100%" colspan="2" style="padding: 0; border-collapse: collapse; color: #999999; font-size: 12px; line-height: 18px; font-family: Arial, sans-serif; mso-line-height-rule: exactly; mso-text-raise: 2px"> Get JIRA notifications on your phone! Download the JIRA Cloud app <a href="https://atlassian.app.link/EfJodxz7ZC" style="color: #3b73af; text-decoration: none">here</a>. 
                                        <hr style="height: 1px; color: #cccccc; background-color: #cccccc; border: none; margin-bottom: 12px" height="1" bgcolor="#cccccc"> </td> 
                                </tr> 
                                <tr> 
                                    <td id="footer-pattern-text" class="mobile-resize-text" width="100%" style="padding: 0; border-collapse: collapse; color: #999999; font-size: 12px; line-height: 18px; font-family: Arial, sans-serif; mso-line-height-rule: exactly; mso-text-raise: 2px"> This message was sent by Atlassian JIRA <span id="footer-build-information">(v1000.1119.1#100055-<span title="d68153351e40f9b9ff7a20f46b69fe78d73e0a14" data-commit-id="d68153351e40f9b9ff7a20f46b69fe78d73e0a14}">sha1:d681533</span>)</span> </td> 
                                    <td id="footer-pattern-logo-desktop-container" valign="top" style="padding: 0; border-collapse: collapse; padding-left: 20px; vertical-align: top"> 
                                        <table style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0"> 
                                            <tbody>
                                                <tr> 
                                                    <td id="footer-pattern-logo-desktop-padding" style="padding: 0; border-collapse: collapse; padding-top: 3px"> <img id="footer-pattern-logo-desktop" src="cid:jira-generated-image-static-footer-desktop-logo-d71e676a-cc46-423d-8483-a967c34f0579" alt="Atlassian logo" title="Atlassian logo" width="169" height="36" class="image_fix"> </td> 
                                                </tr> 
                                            </tbody>
                                        </table> </td> 
                                </tr> 
                            </tbody>
                        </table> </td> 
                </tr> 
            </tbody>
        </table>   
    </body>
</html>