JDBC面试题都在这里(四)

简介: 以下我是归纳的JDBC知识点

JDBC的DataSource是什么,有什么好处


JDBC的DataSource是什么,有什么好处

DataSource即数据源,它是定义在javax.sql中的一个接口,跟DriverManager相比,它的功能要更强大。我们可以用它来创建数据库连接,当然驱动的实现类会实际去完成这个工作。除了能创建连接外,它还提供了如下的特性:

  • 缓存PreparedStatement以便更快的执行
  • 可以设置连接超时时间
  • 提供日志记录的功能
  • ResultSet大小的最大阈值设置
  • 通过JNDI的支持,可以为servlet容器提供连接池的功能



如何通过JDBC的DataSource和Apache Tomcat的JNDI来创建连接池?



如何通过JDBC的DataSource和Apache Tomcat的JNDI来创建连接池?

Tomcat服务器也给我们提供了连接池,内部其实就是DBCP

步骤:

  1. 在META-INF目录下配置context.xml文件【文件内容可以在tomcat默认页面的 JNDI Resources下Configure Tomcat's Resource Factory找到】
  2. 导入Mysql或oracle开发包到tomcat的lib目录下
  3. 初始化JNDI->获取JNDI容器->检索以XXX为名字在JNDI容器存放的连接池

context.xml文件的配置:

<Context>


 <Resourcename="jdbc/EmployeeDB"

           auth="Container"

           type="javax.sql.DataSource"

           

           username="root"

           password="root"

           driverClassName="com.mysql.jdbc.Driver"

           url="jdbc:mysql://localhost:3306/zhongfucheng"

           maxActive="8"

           maxIdle="4"/>

</Context>

try{


           //初始化JNDI容器

           ContextinitCtx=newInitialContext();


           //获取到JNDI容器

           ContextenvCtx=(Context)initCtx.lookup("java:comp/env");


           //扫描以jdbc/EmployeeDB名字绑定在JNDI容器下的连接池

           DataSourceds=(DataSource)

                   envCtx.lookup("jdbc/EmployeeDB");


           Connectionconn=ds.getConnection();

           System.out.println(conn);


       }



Apache的DBCP是什么?



Apache的DBCP是什么

如果用DataSource来获取连接的话,通常获取连接的代码和驱动特定的DataSource是紧耦合的。另外,除了选择DataSource的实现类,剩下的代码基本都是一样的。

Apache的DBCP就是用来解决这些问题的,它提供的DataSource实现成为了应用程序和不同JDBC驱动间的一个抽象层。Apache的DBCP库依赖commons-pool库,所以要确保它们都在部署路径下。

使用DBCP数据源的步骤:

  1. 导入两个jar包【Commons-dbcp.jar和Commons-pool.jar】
  2. 读取配置文件
  3. 获取BasicDataSourceFactory对象
  4. 创建DataSource对象

privatestaticDataSourcedataSource=null;


   static{

       try{

           //读取配置文件

           InputStreaminputStream=Demo3.class.getClassLoader().getResourceAsStream("dbcpconfig.properties");

           Propertiesproperties=newProperties();

           properties.load(inputStream);


           //获取工厂对象

           BasicDataSourceFactorybasicDataSourceFactory=newBasicDataSourceFactory();

           dataSource=basicDataSourceFactory.createDataSource(properties);


       }catch(IOExceptione){

           e.printStackTrace();

       }catch(Exceptione){

           e.printStackTrace();

       }

   }


   publicstaticConnectiongetConnection()throwsSQLException{

       returndataSource.getConnection();


   }


   //这里释放资源不是把数据库的物理连接释放了,是把连接归还给连接池【连接池的Connection内部自己做好了】

   publicstaticvoidrelease(Connectionconn,Statementst,ResultSetrs){


       if(rs!=null){

           try{

               rs.close();

           }catch(Exceptione){

               e.printStackTrace();

           }

           rs=null;

       }

       if(st!=null){

           try{

               st.close();

           }catch(Exceptione){

               e.printStackTrace();

           }


       }

       if(conn!=null){

           try{

               conn.close();

           }catch(Exceptione){

               e.printStackTrace();

           }


       }



   }


目录
相关文章
|
5月前
|
SQL 安全 Java
Java面试题:什么是JDBC以及如何在Java中使用它进行数据库操作?
Java面试题:什么是JDBC以及如何在Java中使用它进行数据库操作?
55 0
|
5月前
|
SQL Java 关系型数据库
Java面试题:描述JDBC的工作原理,包括连接数据库、执行SQL语句等步骤。
Java面试题:描述JDBC的工作原理,包括连接数据库、执行SQL语句等步骤。
73 0
|
7月前
|
存储 JavaScript 前端开发
JDBC六部曲(二)_jdbc创建状态参数,2024年最新面试基本问题及答案
JDBC六部曲(二)_jdbc创建状态参数,2024年最新面试基本问题及答案
|
存储 SQL Java
Java面试题之数据库与JDBC 部分
106、有 3 个表(15 分钟):【基础】 Student 学生表 (学号,姓名,性别,年龄,组织部门) Course 课程表 (编号,课程名称 Sc 选课表 (学号,课程编号,成绩) 表结构如下:
36 0
|
Oracle Java 关系型数据库
玩转Java面试-什么是Java的JDBC?
Java的JDBC(Java Database Connectivity)是一种用于与数据库进行交互的API(Application Programming Interface)。
|
SQL Java 关系型数据库
JDBC面试核心必考知识点
JDBC核心知识点 如有编辑错误联系作者 如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕 王恒杰 男、95后 现居天津 是一名学习java的菜鸟 是万千程序猿中的一只 喜欢编程,喜欢探索新技术,大学生活迷茫过,失落过,还好没有放弃 希望看到这里的你也不要轻易地放弃 这条路上的你并不是孤军奋战,有千千万万的猿在陪你前行
158 0
JDBC面试核心必考知识点
|
Java 数据库连接 开发者
java面试题:在Spring框架中如何更有效地使用JDBC?
java面试题:在Spring框架中如何更有效地使用JDBC?
java面试题:在Spring框架中如何更有效地使用JDBC?
|
Java 数据库连接 数据库
java面试题:解释JDBC抽象和DAO模块?
java面试题:解释JDBC抽象和DAO模块?
java面试题:解释JDBC抽象和DAO模块?
|
SQL 存储 Oracle
【面试专题】2022 年 30 大 JDBC 面试问题和答案
【面试专题】2022 年 30 大 JDBC 面试问题和答案
|
SQL 缓存 Oracle
一个基础又很重要的知识点:JDBC原理(基本案例和面试知识点)
JDBC全称又叫做Java DataBase Connectivity,就是Java数据库连接,说白了就是用Java语言来操作数据库。这篇文章主要是对JDBC的原理进行讲解。不会专注于其使用。主要是理解其思想并对一些常见的面试题进行讲解。
314 0
一个基础又很重要的知识点:JDBC原理(基本案例和面试知识点)
下一篇
DataWorks