5

我不确定如何获得DataSource对象。我能够使用该DriverManager方法获得到在 localhost 上运行的 SQL 数据库的连接,但每次我尝试使用该DataSource方法时,我都会遇到异常(主要用于命名)。

我想知道的是:

  1. 是否可以获取DataSource本地托管数据库的对象?
  2. DataSource课程是否需要发布,或者就像DriverManager您只是在没有新课程创建的情况下获得连接一样?
  3. 你能举个例子吗?
4

1 回答 1

7

ADataSource允许主要从连接池中获取 JDBC 连接。对象表示特定的DataSourceDBMS 或其他一些数据源,例如文件。如果一家公司使用多个数据源,它将DataSource为每个数据源部署一个单独的对象。该DataSource接口由驱动程序供应商实现。您将 DB 连接属性文件外部化并使用 JNDI 获取对象。使用 aDatasource您只需要知道 JNDI 名称。应用服务器关心细节。

它可以通过三种不同的方式实现:

  1. 一个基本的DataSource实现会生成标准的 Connection 对象,这些对象不会在分布式事务中汇集或使用。
  2. 支持连接池的DataSource实现会产生参与连接池的连接对象,即可以回收的连接。
  3. 支持分布式事务的DataSource实现会生成可以在分布式事务中使用的 Connection 对象,即访问两个或多个 DBMS 服务器的事务。

就像在 Spring 中一样,您可以在 XML 文件中配置数据源,然后 (1) 将其注入到您的 bean 中,(2) 从ApplicationContext.

DataSource ds = (DataSource) ApplicationContextProvider.
                            getApplicationContext().getBean("myDataSource");
Connection c = ds.getConnection();

推荐阅读:

  1. 连接数据源对象
  2. 为什么我们使用 DataSource 而不是 DriverManager?
  3. 使用 JDBC 访问数据
  4. 如何在没有 JNDI 的情况下使用 DataSource 检索数据库连接?
  5. 无需 JNDI 管理数据库连接的最佳方式
于 2013-07-24T07:56:34.177 回答