Estoy leyendo la especificación Java JDBC (vr. 4) y encontré esta declaración:
DataSource: esta interfaz se introdujo en la API de paquete opcional de JDBC 2.0. Se prefiere a DriverManager porque permite que los detalles sobre la fuente de datos subyacente sean transparentes para la aplicación.
Lo que estoy tratando de entender es cuál es la diferencia entre ay Connection
a DataSource
, y por qué existe. Quiero decir, el bloque anterior dice que los detalles sobre una fuente de datos son transparentes para la aplicación, pero ¿no funcionaría la externalización de las propiedades de la base de datos como el nombre de usuario, la contraseña, la URL, etc.en un archivo de propiedades y luego usar DriverManager de la misma manera?
¿Y la DataSource
interfaz se crea solo para tener una forma común de devolver conexiones que se pueden agrupar, etc.? En Java EE, ¿el servidor de aplicaciones implementa esta interfaz y las aplicaciones implementadas tienen una referencia a una fuente de datos en lugar de una conexión?
fuente
If you are going to program a connection pool then you have to use DriverManager, otherwise go with Datasource.
- ¿Cambiaste los nombres?DriverManager
DataSource
fuente
El siguiente código muestra dos formas de conectarse.
No es necesario conocer la URL en caso de
mySqlDataSource
que se comente esta línea.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)); } } }
fuente
DataSource
Los objetos pueden proporcionar agrupación de conexiones y transacciones distribuidas, por lo que es posible que deba utilizarlasDataSource
si necesita una de estas funciones o ambas.fuente
Podemos conectarnos usando una fuente de datos de la siguiente manera. Utilice la conexión para realizar cualquier consulta a la base de datos.
DataSource datasource = (DataSource) new InitialContext().lookup(dataSourceName); Connection connection = datasource.getConnection();
fuente