Saya membaca spesifikasi Java JDBC (vr. 4) dan saya menemukan pernyataan ini:
DataSource - antarmuka ini diperkenalkan di JDBC 2.0 Opsional Package API. Ini lebih disukai daripada DriverManager karena memungkinkan detail tentang sumber data yang mendasarinya menjadi transparan bagi aplikasi
Apa yang saya coba pahami adalah apa perbedaan antara a Connection
dan a DataSource
, dan mengapa itu ada. Maksud saya, blok di atas mengatakan bahwa detail tentang sumber data transparan untuk aplikasi, tetapi tidakkah mengeksternalisasi properti database seperti nama pengguna, kata sandi, url dll dalam file properti dan kemudian menggunakan DriverManager bekerja dengan cara yang sama?
Dan apakah DataSource
antarmuka dibuat hanya untuk memiliki cara umum untuk mengembalikan koneksi yang dapat digabungkan, dll? Di Java EE, apakah server aplikasi mengimplementasikan antarmuka ini dan aplikasi yang digunakan memiliki referensi ke sumber data, bukan koneksi?
sumber
If you are going to program a connection pool then you have to use DriverManager, otherwise go with Datasource.
- apakah kamu membalik namanya?DriverManager
DataSource
sumber
Kode di bawah ini menunjukkan dua cara untuk mendapatkan koneksi.
Tidak perlu mengetahui tentang URL jika
mySqlDataSource
baris ini dikomentari.public class MySqlDataSourceTest { public static void main(String[] args) throws SQLException, ClassNotFoundException { /************** using MysqlDataSource starts **************/ MysqlDataSource d = new MysqlDataSource(); d.setUser("root"); d.setPassword("root"); // d.setUrl("jdbc:mysql://localhost:3306/manavrachna"); d.setDatabaseName("manavrachna"); Connection c = (Connection) d.getConnection(); /************** using MysqlDataSource ends**************/ /************** using DriverManager start **************/ Class.forName("com.mysql.jdbc.Driver"); Connection c=(Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/manavrachna","root","root"); /************** using DriverManager ends **************/ Statement st=(Statement) c.createStatement(); ResultSet rs=st.executeQuery("select id from employee"); while(rs.next()) { System.out.println(rs.getInt(1)); } } }
sumber
DataSource
objek dapat menyediakan penyatuan koneksi dan transaksi terdistribusi, jadi Anda mungkin harus menggunakanDataSource
jika Anda memerlukan salah satu atau kedua fitur ini.sumber
Kita bisa mendapatkan koneksi menggunakan sumber data sebagai berikut. Gunakan koneksi untuk melakukan kueri database apa pun.
DataSource datasource = (DataSource) new InitialContext().lookup(dataSourceName); Connection connection = datasource.getConnection();
sumber