JDBC管理数据库体系结构

JDBC管理数据库体系结构

JDBC管理结构

																							~~JDBC管理结构~~ 
  • JDBC
    JDBC(Java DataBase Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
    JDBC API定义了一系列操作数据库的接口和具体类,接口由具体的数据库公司来实现.

  • SQL
    SQL是统一的数据库操作规范

java通过JDBC这些接口的实现类和具体类根据SQL语法操作数据库.

在这里插入图片描述
JDBC API继承体系
JDBC API声明的接口和具体类放在Java sql模块下,Java sql模块提供了两个包,java sql和javax sql, javax sql包是对java sql包的补充. Javax sql包提供了数据库连接池的接口.

  • java操作数据库步骤

1.导包
mysql的驱动jar包为:mysql-connector-java-5.1.37-bin.jar
2.注册驱动
@:DreverManage类中静态方法registerDriver​(Driver driver)
@;mysql可用反射方式注册class.forName(“com.mysql.jdbc.Driver”);mysql包Driver类中有一段静态代码块调用DreverManage类注册方法,反射加载Driver类进内存就完成自动注册.
@:mysql5后不需要注册,在调用mysql方法会自动注册,代码在META-INF/services/java.sql.Drever类中
在这里插入图片描述

3.获取Connection对象
	获取连接的方法getConnection()在DriverManage类下
4.创建Statement对象
	创建方法createStatement()在Connection类下
5.执行sql语句
@:execute​()
@:executeQuery​()
@:executeUpdate​()
6.释放资源
@:.close()方法

@:Statement存在sql注入风险,于是mysql增加了PreparedStatement类,PreparedStatement extends Statement, 获取preparedStatement​(String sql)方法也在Connection类中
@:PreparedStatement对象预编译sql语句, PreparedStatement类setXxx()对’?'赋值
@:如果执行的是查询语句,则返回的是ResultSet集合,操作完成也需要释放ResultSet资源

  • 在获取连接,执行语句,释放资源过程中,每个执行对象循环操作对资源浪费大,于是java在Javax sql包提供了数据库连接池接口,执行完sql语句不释放资源,而是归还连接池

有两个优良的连接池实现类C3P0和Driud(阿里实现)
@:C3P0
C3P0依赖两个jar包:c3p0-0.9.5.2.jar和 mchange-commons-java-0.2.12.jar
配置文件:c3p0.properties 或者 c3p0-config.xml放在src下
连接池对象:DataSource datasource=new ComboPooledDataSource()
获取连接对象:datasource.getConnection()
@:Driud
Driud依赖一个jar包:druid-1.0.9.jar
配置文件:druid.properties, 放在任意路径, 因此使用时需要给Driud先加载出来
连接池对象:DataSource datasource = DruidDataSourceFactory.createDataSource(pro);
获取连接对象:datasource.getConnection()

**C3P0通过创建对象获取连接池, 而Driud通过静态方法createDatasource(), 两者命名都包含Datasource,因为都继承自Datasource接口, 命名方式可以顾名思义**
  • 在写代码时,代码重复量还是很大,因此Spring框架提供了一个模板:JdbcTemplate类
  • JdbcTemplate的jar包有五个:
    commons-logging-1.2.jar
    spring-beans-5.0.0.RELEASE.jar
    spring-core-5.0.0.RELEASE.jar
    spring-jdbc-5.0.0.RELEASE.jar
    spring-tx-5.0.0.RELEASE.jar
    JdbcTemplate使用JdbcTemplate对象执行sql语句,创建方法:JdbcTemplate jdbcTemplate=new JdbcTemplate(Datasource datasource); JdbcTemplate从数据库连接池中获取连接,查询使用preparedStatement执行,因此需要对’?'赋值,在调用执行方法时赋值,如:jdbcTemplate.update(sql,值1,值2…);
  • JdbcTemplate类中常用方法
    @:update()[DML]
    @:query(sql,new RowMap)[DQL]—返回javaBean对象, RowMap是一个接口,需要重写,JdbcTemplate也提供了一个具体类:BeanPropertyRowMapper
    @:queryForMap()[DQL]—只能查询一条记录,结果不止一条则报错
    @:query for List()[DQL]—弥补了queryForMap(),将多个map结果集再封装为List集合
    @:queryForObject(sql,Object.class)[DQL]—将查询结果封装为Object对象,一般查询聚合函数,调用查询方法时指定参数Object泛型E, 在这里不过是通过Object.class方式指定

<拓展>JavaBean: 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制(反射机制)发现和操作这些JavaBean 的属性。任何可以用Java代码创造的对象都可以利用JavaBean进行封装。

ps:个人觉得query(sql,new RowMap)是对queryForObject(sql,E)的JavaBean封装,queryForObject(sql,E)的E泛型类成员变量只有一个时是查询聚合函数,E泛型类成员变量多个时(和数据库对应上)查询的是一条记录, 查询记录有多条时打包成集合返回,不过这里封装成JavaBean对象, 便形成了query(sql,new RowMap)方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaEE(Java Enterprise Edition)体系结构的运行流程可以简单地概括为以下步骤: 1. 客户端发送请求:JavaEE应用程序的客户端可以是任何设备或应用程序,例如Web浏览器、移动设备、桌面应用程序等。客户端向JavaEE服务器发送请求,请求可以是HTTP请求、SOAP请求或其他协议请求。 2. Web服务器接收请求:JavaEE应用程序的前端由Web服务器处理,Web服务器通常是Apache Tomcat、Jetty、JBoss等。Web服务器接收到客户端请求后,会将请求转发给相应的JavaEE组件。 3. Servlet组件处理请求:Servlet是JavaEE应用程序的核心组件之一,它负责处理Web请求和响应。当Web服务器接收到客户端请求后,会将请求转发给相应的Servlet组件。 4. EJB组件处理业务逻辑:如果请求需要处理业务逻辑,则Servlet组件会将请求转发给相应的EJB(Enterprise Java Bean)组件。EJB组件是一种JavaEE组件,用于处理业务逻辑和数据持久化。 5. JMS组件处理消息:如果请求需要处理消息,则Servlet组件会将请求转发给相应的JMS(Java Message Service)组件。JMS组件用于处理异步消息通信。 6. 数据库处理数据:如果请求需要读取或写入数据库,则EJB组件会将请求转发给相应的数据库组件。JavaEE应用程序通常使用JDBC(Java Database Connectivity)API与数据库进行交互。 7. Web服务器响应请求:处理完请求后,Servlet组件、EJB组件或JMS组件会将响应返回给Web服务器。Web服务器将响应发送回客户端,并在客户端的浏览器中呈现。 以上是JavaEE体系结构的基本运行流程,不同的JavaEE应用程序可能会有不同的组件和处理流程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值