Ini bukan cara yang benar. Sumber data perlu dikelola oleh wadah apa pun tempat Anda menjalankan aplikasi. MysqlConnectionPoolDataSource
adalah tidak kolam koneksi. Ini hanyalah implementasi nyata dari javax.sql.DataSource
antarmuka. Anda biasanya mendefinisikannya dalam konteks JNDI dan mendapatkannya dari sana. Juga MySQL sendiri menyatakan semuanya secara eksplisit di dokumentasi mereka
.
Sekarang, cara menggunakannya tergantung pada tujuan aplikasi. Jika ini adalah aplikasi web, maka Anda perlu merujuk dokumentasi sumber daya JNDI dari servletcontainer/appserver yang bersangkutan. Jika misalnya Tomcat, maka Anda dapat menemukannya di sini . Jika Anda menjalankan aplikasi klien --yang saya akan sangat mempertanyakan nilai kumpulan koneksi--, maka Anda perlu mencari kerangka kerja penyatuan koneksi yang dapat menggunakan sumber data kumpulan koneksi yang disediakan MySQL, seperti C3P0 .
Masalah lain dengan kode yang Anda posting adalah bahwa PooledConnection#getConnection()
akan mengembalikan yang mendasari koneksi yang dengan demikian tidak koneksi yang dikumpulkan. Memanggil dekat tidak akan mengembalikan koneksi ke kolam, tetapi hanya benar-benar menutupnya. Kolam harus membuat koneksi baru setiap saat.
Kemudian cerita threadsafety, itu tergantung pada nyata kerangka kerja penyatuan koneksi yang dimaksud. C3P0 telah membuktikan ketangguhannya selama bertahun-tahun, Anda tidak perlu khawatir selama Anda menulis kode JDBC sesuai dengan idiom standar, yaitu gunakan hanya antarmuka JDBC dan dapatkan dan tutup semua sumber daya (Connection
, Statement
dan ResultSet
) dalam cakupan sesingkat mungkin.