使用JDBC和DataSource的区别?

使用JDBC和DataSource的区别?

2010-10-20 17:09 jueljust  |  分类:数据库DB  |  浏览1500次
请问用JDBC和DataSource有啥区别
我知道都可以返回Connection
那DataSource有包含ConnectionPool之类的管理吗?
2010-10-20 17:11 提问者采纳
JDBC -最基本的连接数据库的方式, 每次对数据库打交道的时候 ,连接数据库是需要实例下你实现连接数据库的方法或者类。
JNDI DataSource 英文全称是:Java Naming and Directory Interface  java 命明接口,当服务启动时 事先把连接数据库的已经连好多条,具体多少条你可以设置,存放在tomcat容器里,用的时候可以直接使用, 不用再实例化得到连接, 相对与jdbc效率要快点 ----我的通俗理解

JNDI与JDBC: 
JNDI提供了一种统一的方式,可以用在网络上查找和访问服务。通过指定一个资源名称,该名称对应于数据库或命名服务中的一个纪录,同时返回数据库连接建立所必须的信息。 
代码示例: 
try{ 
Context cntxt = new InitialContext(); 
DataSource ds = (DataSource) cntxt.lookup("jdbc/dpt"); 
} 
catch(NamingException ne){ 
... 
}

/**补充*/
还有用odbc 数据源连接 数据库
连接数据库的方法还不止这几种

主要看你们公司的项目的需求与框架设计
如果你在一个比较成熟的公司,这些你都不用去管,连接数据库这些底层的东西别人早就搭好平台。你只是需要问“如何调用”就ok了
jdbc 是最基本的连接
JNDI 一般是hibernate中使用比较多 

DataSource里能配置很多东西,如最大连接数等

在Java应用程序中,手动创建DataSource实例通常是通过`javax.sql.DataSource`接口或其实现类如`org.springframework.jdbc.datasource.DriverManagerDataSource`或`org.springframework.jdbc.datasource.embedded.EmbeddedDatabase`来完成的。这里是一个基本步骤: 1. **选择DataSource实现**:如果你正在使用Spring框架,可以选择`Spring DataSources`,如`org.springframework.jdbc.datasource.DriverManagerDataSource`。如果不使用Spring,可以使用`java.sql.DriverManager`来创建。 ```java // 使用Spring JDBC DriverManagerDataSource dataSource = new DriverManagerDataSource(); ``` ```java // 不使用Spring,直接使用JDBC BasicDataSource dataSource = new BasicDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/mydatabase"); dataSource.setUsername("username"); dataSource.setPassword("password"); ``` 2. **设置属性**:根据你的数据库配置,设置必要的属性,比如数据库URL、驱动名称、用户名密码。 3. **注入依赖**:如果是在Spring应用中,你可以将DataSource作为bean注册,并在其他组件(如Repository或Service)中通过@Autowired注解来注入它。例如: ```java @Configuration @ComponentScan public class AppConfig { @Bean(destroyMethod = "close") public DataSource dataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName(...); dataSource.setUrl(...); dataSource.setUsername(...); dataSource.setPassword(...); return dataSource; } } ``` 4. **使用DataSource**:现在你可以在需要的地方使用注入的DataSource了,比如执行SQL查询。 ```java @Service public class UserService { private final DataSource dataSource; @Autowired public UserService(DataSource dataSource) { this.dataSource = dataSource; } public void createUser(User user) { try (Connection conn = dataSource.getConnection()) { // 执行SQL操作 } catch (SQLException e) { // 处理异常 } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值