大数据之JDBC初探
在整个大数据技术体系学习中,自学需要分阶段学习Java SE、MySQL、JDBC、Java Web、Linux、Hadoop、HBase、Phoenix、Hive、Scala、Spark、Flink等知识,中间最好利用一些项目把知识点串联起来。手动点赞尚硅谷和多易的B站全套大数据视频!!!
学习一个技术,首先带着几个疑问?
- 是什么?
- 解决什么问题?
- 怎么用?
- 有什么优点和不足之处?
- 是采用什么思路和出发点实现的
1.JDBC是什么?
它是一套规范,或者说是一套接口,让各个数据库厂商依据此规范实现各自的Java数据库驱动。方便统一使用Java调用各个数据库的接口代码统一。
它也是一个约束,各大厂商需要遵守这个约束来实现自己数据库的java驱动代码。java程序员要使用各个数据库也是在JDBC这个规范下进行代码调用
2.解决什么问题

3.怎么用?
package com;
import com.mysql.jdbc.Driver;
import java.sql.*;
public class Test {
public static void main(String[] args) throws SQLException, ClassNotFoundException {
// 注册
// Driver driver = new Driver();
// DriverManager.registerDriver(driver);
Class.forName("com.mysql.jdbc.Driver");
// 创建连接
Connection connection = DriverManager.getConnection("JDBC:mysql://localhost:3306/db_demo3", "root", "123456");
// 获取执行代码对象
Statement statement = connection.createStatement();
// 执行代码
ResultSet resultSet = statement.executeQuery("select * from db_demo3.tb_employ");
// 获取结果
while(resultSet.next()) {
String empno = resultSet.getString("empno");
String ename = resultSet.getString("ename");
String job = resultSet.getString("job");
System.out.println(empno + "--" + ename + "--" + job);
}
// 关闭连接
resultSet.close();
statement.close();;
connection.close();
}
}
4.有什么优点和不足
- 优点
已经说了,就是可以很好地实现一份Java代码,连接和操作不同的数据库。需要修改的只是不同的数据库驱动和注册的代码,其他代码都不需要修改。 - 不足
对于整体代码而言,还有一些繁琐,包括驱动注册,连接创建和复用,关流等。所以出现了一些第三方库,进一步精简代码。如阿里家的Druid就是如此:
package com;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;
public class DruidTest1 {
public static void main(String[] args) {
Properties properties = new Properties();
try {
properties.load(DruidTest1.class.getClassLoader().getResourceAsStream("druid.properties"));
DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
Connection connection = dataSource.getConnection();
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("select * from tb_employ");
while (resultSet.next()) {
String ename = resultSet.getString("ename");
System.out.println("ename:" + ename);
}
resultSet.close();
statement.close();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
5.采用什么思路和出发点实现的?
- 分层的思想。把原本需要重复多份的java跟不同数据库之间连接和操作的代码通过JDBC规范这一层统一起来。都通过这一套规范进行通信。具体实现则是公布一系列接口interface,数据库厂商则根据这些接口实现其中方法。这样Java代码调用这些接口中代码就能确保跟所有数据库交互的方法都是一样的。
- 重复代码的精简思想其实从Java最底层的JVM就体现了。
- 为了确保Java的可移植性,Java代码只需要写一份可以运行在不同平台。不同操作系统实现了各自的JVM虚拟机,同样的,Java也是先制定出JVM的规范,然后根据这些规范去实现JVM虚拟机。
- JDBC也是一样的出发点,在更低一层进行抽离,这样上层调用直接遵循一套规范即可。底层来确保接口调用统一性。
- Unity的可移植性其实就是一份Js或者C#代码,在编译时,一键生成针对不同平台的可执行包。也能确保可移植性,和JVM虚拟机殊途同归,整体思想也都是更底层做兼容工作,更上层则只需要遵循一套规则即可。
Java不愧是编程届扛把子,处处都有体现,需要学习的编程思想还有很多,生有涯,知无涯,享受纯粹知识学习的快乐。
129

被折叠的 条评论
为什么被折叠?



