如何获得DataSource?

Sar*_*abo 5 java database connection exception jdbc

我不确定如何获得一个DataSource物体.我能够使用该DriverManager方法获取与在localhost上运行的SQL数据库的连接,但每次我尝试使用该DataSource方法时,我最终会获得异常(主要用于命名).

我想知道的是:

  1. 是否可以获取DataSource本地托管数据库的对象?
  2. DataSource该类是否需要发布,或者就像DriverManager您刚刚获得没有新类创建的连接一样?
  3. 你能展示一个例子吗?

NIN*_*OOP 7

A DataSource允许主要从连接池获取JDBC连接.甲DataSource对象表示一个特定的DBMS或一些其它数据源,诸如一个文件.如果公司使用多个数据源,它将DataSource为每个数据源部署一个单独的对象.该DataSource接口由驱动程序供应商实现.您外部化数据库连接属性文件并使用JNDI获取对象.使用a Datasource您只需要知道JNDI名称.应用程序服务器关注详细信息.

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

  1. 基本DataSource实现生成标准的Connection对象,这些对象未在分布式事务中合并或使用.
  2. DataSource支持连接池的实施产生了参与连接池,即,可循环连接的连接对象.
  3. DataSource支持分布式事务实施产生可以在分布式事务,即,访问两个或多个DBMS服务器事务中使用的连接对象.

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

DataSource ds = (DataSource) ApplicationContextProvider.
                            getApplicationContext().getBean("myDataSource");
Connection c = ds.getConnection();
Run Code Online (Sandbox Code Playgroud)

推荐阅读:

  1. 连接DataSource对象
  2. 为什么我们使用DataSource而不是DriverManager?
  3. 使用JDBC进行数据访问
  4. 如何在没有JNDI的情况下使用DataSource检索数据库连接?
  5. 没有JNDI管理数据库连接的最佳方法