JDBC入门讲座(下)

         ——接《JDBC入门讲座(上)》

        我们已经了解了SQL中对于数据库数据以及事务的操作,下面我们将关注点放在程序员如何利用Java对数据库操作这个问题上,也就是JDBC。

        首先JDBC的全称是Java Data Base Connectivity,即Java数据库连接。它是一种用于执行SQL语句的Java API。

        Java数据库的应用范围也是数据库应用的范围很广。

        JDBC的组成,很关键的有JDBC驱动,数据源

        用JDBC执行SQL语句的固定模式,三步骤(三句话):加载JDBC驱动,连接数据源,执行SQL语句。

         其中,加载JDBC驱动就是根据不同的数据库管理软件DBMS,加载不同的驱动,加载驱动实际上就是在Java中执行SQL代码前需要一些驱动代码来调用DBMS的接口,而这些代码其实已经以Jar包的方式(或其他)在官方DBMS公司的产品中给出。结构化查询语言根据特定的DBMS也会略有不同。下面举出的是Oracle数据库驱动和MySQL数据库驱动。

        加载驱动过后就是了解了所采用DBMS的类型,然后连接数据源。每一个DBMS中会有许多个应用程序的数据集合,通常把它叫做Scheme,一个Scheme中可以包含多个数据库表格。我们的讲座中忽略了数据库表的概念,这个很基础却暂时可以按常识去理解,详细请看专门介绍数据库的书籍。当前应用程序要使用哪个Scheme,即采用哪一些数据需要在此设定。比如String url = “jdbc:mysql://localhost:3306/xxxx”,其中“xxxx”就是Scheme的名称。

        JDBC代码中常用的一些类和方法。Statement类和ResultSet结果集类是我们执行每条sql语句所必须使用的。用Statement处理SQL语句,用ResultSet接收返回结果集合。

        到目前为止,我们已经了解了使用JDBC来执行SQL语句,并且根据之前所学的Java语言以及面向对象知识,应该可以初步写一些JDBC小程序了。

        不过我们还并不满足于现状。所有的代码通过结果集来处理,每一次sql语句都要写那三句话(加载驱动,连接数据源,执行SQL语句)吗?整个程序应该采取哪一种设计方法(设计模式)好的。

        对于我们提出的这些问题,我们引出了DAO模式,这是一种设计模式,叫做数据访问对象模式,专门用于访问如数据库表中的数据对象。使用JDBC返回的结果集每次取出数据都需要特别的解析,比如返回的每一条记录中每一个列的类型,属性的数目都不同。针对不同的SQL语句会写许多解析结果集的代码显得异常笨拙。相比之下,数据访问对象模式我们可以从字面上理解,希望每次返回的结果可以封装成一个Java对象,它具有某一个或多个属性,采用这种模式更具有面向对象的特点。

        我们用一个读取Member对象的小程序为例。(此例由科科学长摘自某本书,具体我不太清楚。)用一个MemberDAO接口定义了对Member数据表的所有操作。通过JDBCMemberDAOImpl类实现接口的方法。在每个方法中采用普通JDBC的编码模式,即在try-catch块中,用三句话(加载驱动,连接数据源,执行SQL语句)解决。而MemberDAO接口方法的返回类型可以定义为Member对象类型,与底层的结果集分离,使上层调用更加简洁清楚。

        这是这个Member例子的UML类图。现在只看不是紫色的部分。这个例图中的紫色部分我们一会儿在ORM对象关系映射中会继续使用。

        一个简单的基于面向对象思想的程序底层数据库数据读取部分已经初露雏形,右下这张图说的是目前最简单的系统所采取的分层设计结构。以这个简单应用程序结构来说,我们已经完成了最下两个层。也就是说,我们已经可以通过JDBC完成持久层DAO的部分,并且通过DBMS来完成数据库的部分。而业务逻辑层需要了解更多业务而编写Java代码,表现层可使用Java Swing组件编写桌面客户端(最有名的Swing客户端就是eclipse集成开发环境)或者在网络应用中用JSP或Java Script,html编写前台代码。

        我们依然不满足于采用了数据访问对象设计模式的JDBC程序。之后一些企业程序牛人发现了使用JDBC也有很多不方便之处。

        ORM对象关系映射就是在JDBC基础上封装出的一层企业级框架。使程序员可以忽略直接使用JDBC带来的一些繁琐问题。

        ORM是一种思想,而各IT公司的ORM产品多样,性能也不尽相同,最为流行的是Hibernate。

        我们把采用数据访问对象的JDBC程序例子——“Member例子”继续深入,采用多个ORM框架来实现Member例子。可以达到和JDBC同样的效果,而代码量减少了很多。可以看出不同的ORM框架解决方案就是对MemberDAO接口的多种实现。

        基本的JDBC以及使用用JDBC封装的ORM框架程序基本可以完成小型的应用系统中的数据访问对象层。而表现层以及业务逻辑层的设计和实现需要继续学习一些知识,并且根据实际的问题作出设计。

        下面我们简单了解一些数据库中的数据模型是如何组织的,针对特定的需求又如何来自己设计数据库表呢?

        数据库设计的概念如下。

        数据库的设计大致分为:需求分析,概念数据库设计,逻辑数据库设计,物理数据库设计。概念数据库与需求需要相符相乘的进行设计,通常采用的是自底向上的分析方法。

        以一个项目中的简单例子(一个教师教学网络平台项目中的上传下载课件子模块为例)依次进行的需求分析、概念设计、逻辑数据库设计、物理数据库设计。

        JDBC就此讲完了。再来看一下几次讲座的内容,大概有所了解。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值