繁体   English   中英

如何获取数据源?

[英]How to get a DataSource?

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

我想知道的是:

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

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

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

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

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

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

建议阅读:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM