2012-09-06 7 views
6

आज इस प्रश्न में चलने के बाद: Grails query not using GORM मुझे आश्चर्य है कि groovy.sql.Sql या JDBC का उपयोग कनेक्शन पूलिंग के लाभों के साथ आता है?ग्राउंड्स में groovy.sql.Sql या जेडीबीसी के साथ कनेक्शन पूलिंग और तैयार कथन

मैं कुछ परिस्थितियों में देख सकता हूं कि गोर्मलेस कैसे फायदेमंद हो सकता है, लेकिन कॉनन पूलिंग की कमी इसे एक विकल्प के रूप में खत्म कर देगी।

क्या हमें तैयार बयानों के लाभ भी मिलेंगे?

उत्तर

7

एक DataSource के मुख्य उपयोगों में से एक connection pooling. प्रदान करने के लिए आप में pooled = true सेट किया है, तो है DataSource.groovy तब इंजेक्शन डेटा स्रोत आपको क्वेरी निष्पादित करते समय पूल से कनेक्शन देगा।

ग्रूवी एसक्यूएल भी तैयार बयान का उपयोग कर क्वेरी करने देता है:

def sql = new Sql(dataSource) 
def params = [10, 'Groovy', 'http://groovy.codehaus.org'] 
sql.execute 'insert into PROJECT (id, name, url) values (?, ?, ?)', params 

तुम भी प्रदर्शन के लिए Sql वस्तु पर PreparedStatement कैशिंग को सक्षम कर सकते हैं:

sql.cacheStatements = true 
6

यदि आपका डेटास्रोत कनेक्शन पूलिंग का उपयोग करने के लिए कॉन्फ़िगर किया गया है, तो ग्रोवी एसक्यूएल इससे लाभान्वित होगा।

सेवा के उदाहरण का उपयोग:

class MyService { 
    //inject dataSource 
    def dataSource 

    def myMethod() { 
    Sql sql = new Sql(dataSource) 
    sql.execute("insert...") //this will get a connection from the pool 
    sql.close() //this will release the connection back to pool 
    } 
} 

अपने तरीकों के लिए एक ही कनेक्शन का उपयोग करने के लिए, जाँच cacheConnection

संबंधित मुद्दे