我們使用Eclipselink進行ORM,但我們需要一些更加輕量級的與JDBC更相當的數據庫交互。我的問題是Eclipselink是否支持這種習慣用法,以及它是否對直接JDBC有任何優勢。我可以看到一個優點是一致性並且能夠使用現有的連接處理。其他?我可以並且應該使用Eclipselink進行非數據庫交互嗎?
具體來說,我在找什麼等同於Hibernate的Native SQL Query。
我們使用Eclipselink進行ORM,但我們需要一些更加輕量級的與JDBC更相當的數據庫交互。我的問題是Eclipselink是否支持這種習慣用法,以及它是否對直接JDBC有任何優勢。我可以看到一個優點是一致性並且能夠使用現有的連接處理。其他?我可以並且應該使用Eclipselink進行非數據庫交互嗎?
具體來說,我在找什麼等同於Hibernate的Native SQL Query。
如果您在應用程序中同時使用JPQL和SQL查詢,那麼JPA 2原生查詢可能是正確的方法。下面是一些例子:
http://www.oracle.com/technology/pub/articles/vasiliev-jpql.html
如果您的應用程序只使用SQL查詢和更新,然後ORM只是一個開銷。你也可以通過不同的方式獲得聲明式事務,例如通過Spring的JDBC支持。
EclipseLink實現JPA - 您可以通過EntityManager運行SQL查詢。如果您開始運行與您的應用程序模型無關的SQL查詢,那麼與JDBC相比,您將沒有任何優勢 - 相反,您將使用更重的基礎架構。如果您將SQL to the model連接起來,則您可以利用完整的數據庫潛能對查詢進行額外優化。我不確定這是否是你想要做的,但是...
但看着它,看起來使用本機查詢只意味着我正在使用SQL而不是JPQL。就我所能看到的或單個標量結果而言,我仍然依賴於對象模型。如果我只想從數據庫中取出一行,是否必須創建一個Class來映射到結果? – Tim 2010-05-21 14:37:11
我相信對於更靈活的結果集映射,您應該考慮使用Spring JDBC支持。 – 2010-05-23 18:34:47