Criteria Api Vs QueryDsl Vs JPA metamodel










2















I am a bit confused about these three concepts.



  • Criteria API

  • Query Dsl

  • Jpa 2.0 meta model

From what I have read, One of the major benifits of using QueryDsl or JPA metamodel is type safety.

But I can achieve type safety even with Criteria API's. (I am using JPA with eclipselink)



javax.persistence.EntityManager has two variants



public Query createQuery(String sqlString); 
public <T> TypedQuery<T> createQuery(CriteriaQuery<T> criteriaQuery);


I agree with first version where I pass sql as string I don't get type safety. But with the second version I get type safety. Or am I missing something here? Can someone explain with an example how using criteria is not type safe.



What is the difference between QueryDsl and JPA static meta model ?










share|improve this question




























    2















    I am a bit confused about these three concepts.



    • Criteria API

    • Query Dsl

    • Jpa 2.0 meta model

    From what I have read, One of the major benifits of using QueryDsl or JPA metamodel is type safety.

    But I can achieve type safety even with Criteria API's. (I am using JPA with eclipselink)



    javax.persistence.EntityManager has two variants



    public Query createQuery(String sqlString); 
    public <T> TypedQuery<T> createQuery(CriteriaQuery<T> criteriaQuery);


    I agree with first version where I pass sql as string I don't get type safety. But with the second version I get type safety. Or am I missing something here? Can someone explain with an example how using criteria is not type safe.



    What is the difference between QueryDsl and JPA static meta model ?










    share|improve this question


























      2












      2








      2


      0






      I am a bit confused about these three concepts.



      • Criteria API

      • Query Dsl

      • Jpa 2.0 meta model

      From what I have read, One of the major benifits of using QueryDsl or JPA metamodel is type safety.

      But I can achieve type safety even with Criteria API's. (I am using JPA with eclipselink)



      javax.persistence.EntityManager has two variants



      public Query createQuery(String sqlString); 
      public <T> TypedQuery<T> createQuery(CriteriaQuery<T> criteriaQuery);


      I agree with first version where I pass sql as string I don't get type safety. But with the second version I get type safety. Or am I missing something here? Can someone explain with an example how using criteria is not type safe.



      What is the difference between QueryDsl and JPA static meta model ?










      share|improve this question
















      I am a bit confused about these three concepts.



      • Criteria API

      • Query Dsl

      • Jpa 2.0 meta model

      From what I have read, One of the major benifits of using QueryDsl or JPA metamodel is type safety.

      But I can achieve type safety even with Criteria API's. (I am using JPA with eclipselink)



      javax.persistence.EntityManager has two variants



      public Query createQuery(String sqlString); 
      public <T> TypedQuery<T> createQuery(CriteriaQuery<T> criteriaQuery);


      I agree with first version where I pass sql as string I don't get type safety. But with the second version I get type safety. Or am I missing something here? Can someone explain with an example how using criteria is not type safe.



      What is the difference between QueryDsl and JPA static meta model ?







      java jpa-2.0 criteria querydsl type-safety






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 15 '18 at 18:15







      pvpkiran

















      asked Nov 15 '18 at 18:08









      pvpkiranpvpkiran

      12.2k42544




      12.2k42544






















          1 Answer
          1






          active

          oldest

          votes


















          1














          You can use JPA meta model in Criteria API for type safety, but criteria api is quite complicated comparing to QueryDSL






          share|improve this answer






















            Your Answer






            StackExchange.ifUsing("editor", function ()
            StackExchange.using("externalEditor", function ()
            StackExchange.using("snippets", function ()
            StackExchange.snippets.init();
            );
            );
            , "code-snippets");

            StackExchange.ready(function()
            var channelOptions =
            tags: "".split(" "),
            id: "1"
            ;
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function()
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled)
            StackExchange.using("snippets", function()
            createEditor();
            );

            else
            createEditor();

            );

            function createEditor()
            StackExchange.prepareEditor(
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader:
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            ,
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            );



            );













            draft saved

            draft discarded


















            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53325506%2fcriteria-api-vs-querydsl-vs-jpa-metamodel%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            1














            You can use JPA meta model in Criteria API for type safety, but criteria api is quite complicated comparing to QueryDSL






            share|improve this answer



























              1














              You can use JPA meta model in Criteria API for type safety, but criteria api is quite complicated comparing to QueryDSL






              share|improve this answer

























                1












                1








                1







                You can use JPA meta model in Criteria API for type safety, but criteria api is quite complicated comparing to QueryDSL






                share|improve this answer













                You can use JPA meta model in Criteria API for type safety, but criteria api is quite complicated comparing to QueryDSL







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 16 '18 at 13:32









                Konstantin DevyatkinKonstantin Devyatkin

                661




                661





























                    draft saved

                    draft discarded
















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid


                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.

                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53325506%2fcriteria-api-vs-querydsl-vs-jpa-metamodel%23new-answer', 'question_page');

                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    這個網誌中的熱門文章

                    How to read a connectionString WITH PROVIDER in .NET Core?

                    Node.js Script on GitHub Pages or Amazon S3

                    Museum of Modern and Contemporary Art of Trento and Rovereto