JDBC第四讲:JDBC知识扩展

一、JDBC应用的分层(DAO)

    分层就是对功能的隔离,降低层与层之间的耦合性。
    软件的分层初步:
        JSP          Struts
      View(界面) --> Controlle --> Atio ---> Service/Biz --> DAO ---->  DB
       重新封装        可复用       封装信息      懂业务逻辑    数据访问层    数据层
                               调业务       无技术难度    与业务无关
    谁依赖谁就看谁调用谁。
    软件的分层设计,便于任务的划分、降低层间的耦合。
    结合PMS的设计方法,思考这样分层的好处。
    并且,使代码尽量减少重复,可复用性好,扩展余地加大,而且尽量减少硬编码。
    需求:实现对Person类的数据库持久化基本操作(CRUD)。
    BS架构和CS架构:
    C-S架构:两层体系结构,主要应用于局域网中。
    B-S架构:三层体系结构,表现层+业务逻辑层+数据存储层
         注:层面越多,软件越复杂,但更灵活。分层是必须的但是要有个度。
            层次一但确定,数据必须按层访问,不能跨层访问。
            层与层之间最好时单向依赖(单向调用)。
    纵向划分:按功能划分。分成三层体系结构(也有两层的)。
    横向划分:按抽象划分。分成抽象部分和实现部分。

二、JDBC异常处理:

   JDBC中,和异常相关的两个类是SQLException和SQLWarning。

      1.SQLException类:用来处理较为严重的异常情况。

        比如:① 传输的SQL语句语法的错误;
             ② JDBC程序连接断开;
             ③ SQL语句中使用了错误的函数。
        SQLException提供以下方法:
          getNextException() —— 用来返回异常栈中的下一个相关异常;
          getErrorCode() —— 用来返回代表异常的整数代码 (error code);
          getMessage() —— 用来返回异常的描述信息 (error message)。

      2.SQLWarning类:用来处理不太严重的异常情况,也就是一些警告性的异常。

        其提供的方法和使用与SQLException基本相似。
    结合异常的两种处理方式,明确何时采用哪种。
      A. throws        处理不了,或者要让调用者知道;

三、JavaBean的定义:

    1、是一个普通的Java类
    2、在结构上没有预先的规定,不需要容器,不需要继承类或实现接口
    3、要求必须放在包中,要求实现Serializable接口
    4、要求有一个无参的构造方法.
    5、属性的类型必须保持唯一,get方法返回值必须和set方法参数类型一致
    6、对每个属性要有对应的get和set方法。注:隐藏属性可以没有
    7、可以有外观作为显示控制,事件机制。

四、SQL数据类型及其相应的Java数据类型

   SQL数据类型 ? ? ? ? ? ? Java数据类型 ? ? ? ? ? ? ?说明
??---------------------------------------------------------------------------------------
? ?INTEGER或者INT ? ? ? ? ?  int ? ? ? ? ? ? ? 通常是个32位整数
? ?SMALLINT ? ? ? ? ? ? ?   short ? ? ? ? ? ? 通常是个16位整数
? ?NUMBER(m,n) ? ? ?      Java.sql.Numeric ? ?合计位数是m的定点十进制数,小数后面有n位数
   DECIMAL(m,n)              同上
? ?DEC(m,n) ? ? ? ? ? ? ? Java.sql.Numeric ? ?合计位数是m的定点十进制数,小数后面有n位数
? ?FLOAT(n) ? ? ? ? ? ? ?    double ? ? ? ? ? 运算精度为n位二进制数的浮点数
? ?REAL ? ? ? ? ? ? ? ?    ? float ? ? ? ? ? ?通常是32位浮点数
? ?DOUBLE ? ? ? ? ? ? ?    ? double ? ? ? ? ? 通常是64位浮点数
?  CHAR(n) ? ? ? ? ?         String ? ? ? ? ? 长度为n的固定长度字符串
   CHARACTER(n)              同上
? ?VARCHAR(n) ? ? ? ? ?     ?String ? ? ? ? ? 最大长度为n的可变长度字符串
? ?BOOLEAN ? ? ? ? ? ? ?    ?boolean ? ? ? ? ?布尔值
? ?DATE ? ? ? ? ? ? ? ? ? Java.sql.Date ?  ?  根据具体设备而实现的日历日期
? ?TIME ? ? ? ? ? ? ? ? ? Java.sql.Time ? ? ? 根据具体设备而实现的时戳
? ?TIMESTAMP ? ? ? ? ? ?? Java.sql.Timestamp ?根据具体设备而实现的当日日期和时间
? ?BLOB ? ? ? ? ? ? ? ?   Java.sql.Blob ? ??  二进制大型对象
? ?CLOB ? ? ? ? ? ? ? ?  ?Java.sql.Clob ? ??  字符大型对象
? ?ARRAY ? ? ? ? ? ? ? ?? Java.sql.Array

五、 面向对象的数据库设计

    类的关联,继承在数据库中的体现:
      类定义―――>表定义
      类属性―――>表字段
      类关系―――>表关系
      对  象―――>表记录
    注: Oid(对象id)―――>业务无关
        在数据库中每一条记录都对应一个唯一的id;
        Id通常是用来表示记录的唯一性的,通常会使用业务无关的数字类型
        字段的个数不会影响数据库的性能,表则越多性能越低。

    (一)类继承关系对应表,

        1、 为每一个类建一张表。通过父类的Oid来体现继承关系。
            特点:在子类表中引用父类表的主建作为自己的外建。
            优点:方便查询。属性没有冗余。支持多态。
            缺点:表多,读写效率低。生成报表比较麻烦。
        2、 为每一个具体实现类建一个表
            特点:父类的属性被分配到每一个子类表中。
            优点:报表比较容易
            缺点:如果父类发生改变会引起所有子类表随之更改。并且不支持多态。数据有少量冗余。
        3、 所有的类在一张表中体现,加一个类型辨别字段
            特点:效率高,查询不方便,用于字段不多时。
            优点:支持多态,生成报表很简单。
            缺点:如果任何一个类发生变化,必须改表。字段多,难以维护。

    (二)类关联关系对应表

        1、 一对一关联,类关系对应成表时有两种做法:
            一是引用主键,也就是一方引用另一方的主键既作为外键有作为自身的主键。
            二是外键引用,一方引用另一方的主键作为自身的外键,并且自己拥有主键。
        2、 一对多关联,也就是多端引用一端的主键当作外键,多端自身拥有主键。
        3、 多对多关系,多对多关系是通过中间表来实现的,中间表引用两表的主键当作联合主键,就可以实现多对多关联。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值