<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p><br>
    </p>
    <br>
    <div class="moz-cite-prefix">On 8/19/16 10:13 AM, Bill Burke wrote:<br>
    </div>
    <blockquote
      cite="mid:3569c4f1-4471-9143-0147-180b2f650c2b@redhat.com"
      type="cite">
      <meta content="text/html; charset=windows-1252"
        http-equiv="Content-Type">
      <p><br>
      </p>
      <br>
      <div class="moz-cite-prefix">On 8/19/16 9:04 AM, Stian Thorgersen
        wrote:<br>
      </div>
      <blockquote
cite="mid:CAJgngAfA3jVSENea3hC0Y21JgH5scgtxu88JSpok54bi7GK-1w@mail.gmail.com"
        type="cite">
        <div dir="ltr"><br>
          <div class="gmail_extra"><br>
            <div class="gmail_quote">On 19 August 2016 at 14:57, Bill
              Burke <span dir="ltr">&lt;<a moz-do-not-send="true"
                  href="mailto:bburke@redhat.com" target="_blank">bburke@redhat.com</a>&gt;</span>
              wrote:<br>
              <blockquote class="gmail_quote" style="margin:0 0 0
                .8ex;border-left:1px #ccc solid;padding-left:1ex">
                <div bgcolor="#FFFFFF" text="#000000"><span class="">
                    <p><br>
                    </p>
                    <br>
                    <div>On 8/19/16 2:34 AM, Stian Thorgersen wrote:<br>
                    </div>
                    <blockquote type="cite">
                      <div dir="ltr"><br>
                        <div class="gmail_extra"><br>
                          <div class="gmail_quote">On 18 August 2016 at
                            19:26, Bill Burke <span dir="ltr">&lt;<a
                                moz-do-not-send="true"
                                href="mailto:bburke@redhat.com"
                                target="_blank">bburke@redhat.com</a>&gt;</span>
                            wrote:<br>
                            <blockquote class="gmail_quote"
                              style="margin:0 0 0 .8ex;border-left:1px
                              #ccc solid;padding-left:1ex">
                              <div bgcolor="#FFFFFF" text="#000000"><span>
                                  <p><br>
                                  </p>
                                  <br>
                                  <div>On 8/18/16 1:13 AM, Stian
                                    Thorgersen wrote:<br>
                                  </div>
                                  <blockquote type="cite">
                                    <div dir="ltr">One problem with this
                                      approach is that you end up having
                                      a separate JDBC connection and
                                      transaction even if it uses the
                                      same database the Keycloak server
                                      uses.
                                      <div><br>
                                      </div>
                                    </div>
                                  </blockquote>
                                </span> Something we have to fix
                                anyways.  Its on my todo list. </div>
                            </blockquote>
                            <blockquote class="gmail_quote"
                              style="margin:0 0 0 .8ex;border-left:1px
                              #ccc solid;padding-left:1ex">
                              <div bgcolor="#FFFFFF" text="#000000"><span><br>
                                  <br>
                                  <blockquote type="cite">
                                    <div dir="ltr">
                                      <div>Take a look at <a
                                          moz-do-not-send="true"
href="https://github.com/keycloak/keycloak/tree/master/examples/providers/domain-extension/src/main/java/org/keycloak/examples/domainextension/jpa"
                                          target="_blank">https://github.com/keycloak/ke<wbr>ycloak/tree/master/examples/pr<wbr>oviders/domain-extension/src/<wbr>main/java/org/keycloak/example<wbr>s/domainextension/jpa</a>
                                        for example which allows adding
                                        custom entities to the main
                                        EntityManager.</div>
                                    </div>
                                    <div class="gmail_extra"><br>
                                    </div>
                                  </blockquote>
                                </span> I'm really not a big fan of this
                                extension and this is something I do not
                                want to support for product ever.</div>
                            </blockquote>
                            <div><br>
                            </div>
                            <div>Why, please elaborate? IMO it's a
                              really nice and simple way to add a few
                              extra entities for custom providers.</div>
                          </div>
                        </div>
                      </div>
                    </blockquote>
                  </span> Are you going to make our JPA entity classes
                  public?  If not, what's the point of this extension? 
                  Now that we have real deployers, its now easier to
                  write your own persistence unit.  Take a look at the
                  example:<br>
                </div>
              </blockquote>
              <div><br>
              </div>
              <div>Has nothing to do with our entity classes. It allows
                users to easily register an extra entity in our
                persistence unit, so same connection and transaction and
                no need to create a persistence unit at all. It also has
                support for Liquibase so schema is update the same way
                as with our stuff. Users would then get the
                EntityManager from the JpaConnectionProvider and be able
                to get their custom entities from there.</div>
              <div><br>
              </div>
              <div>It's simpler than what you have. Doesn't work if
                folks want a different database and such though.</div>
            </div>
          </div>
        </div>
      </blockquote>
      I disagree.  Its not simpler than using standard EJB/JPA.<br>
      <br>
      @PersistenceContext EntityManager em;<br>
      <br>
      is simpler than<br>
      <br>
      EntityManager em =
      KeycloakSession.getProvider(JpaConnectionProvider.class);<br>
      <br>
    </blockquote>
    Another reason standard EJB/JPA is simpler is that
    JpaConnectinProvider *requires* the developer to know and write
    liquibase XML for their new entities.  This is a real pain in the
    ass.  Standard JPA, the schema can be created/updated automatically.<br>
    <br>
    Bill<br>
  </body>
</html>