⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 08. jdbc note.txt

📁 在达内培训java笔记
💻 TXT
📖 第 1 页 / 共 3 页
字号:
        /*********通过JNDI获得绑定的资源**************/
        public static Object lookup(String context) throws NamingException{
            Properties pro = new Properties();
            //Weblogic的JNDI服务器参数
        pro.put(InitialContext.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
            pro.put(InitialContext.PROVIDER_URL, "t3://localhost:7001");
            Context ctx = new InitialContext(pro);
            return ctx.lookup(context);//查找;通过指定的字符串获得先前绑定的资源。
        }

    (三)连接池:
        在内存中用来保存一个个数据库连接的对象。
        访问数据库时,建立连接和拆连接需要花费较长时间,通过以连接池直连的方式获取连接,不需要注册驱动程序,可以大量
        的节省销毁和创建连接的资源消耗,提高访问数据库的效率。
     注:通过连接池获得的Connection,当执行con.close()时,不是关闭连接,而是表示将连接释放回连接池。
         连接池是一个很复杂的算法,由服务器厂商实现。

    (四)分布式的事务管理器JTA
        分布式事务是通过多个异地数据库执行一组相关的操作,要保证原子操作的不可分,
        也不用再自己写commit,和rollback,全部都交给中间服务器(TM)来处理。
        (两阶段提交),也就是在中间服务器发送sql语句等待数据库回应,都回应操作成功才提交,否则同时回滚。
                         ----------------   commit
            con1 ------->| TM(事务管理器) | -----------> DB1
            con2 ------->|    commit    | -----------> DB2
                         ----------------   commit
        1、regester  
        2、TM->execute()  
        3、commit->TM 
        4、TM->commit->DB 

    (五)RowSet
                行集,这是一个JavaBean(事件机制),它增强了ResultSet的功能,包装了Connection、Statement、
        ResultSet、DriverManage。通过RowSet可以获得数据源,设置隔离级别,也可以发送查寻语句,也实现了离线的操
        作遍历,RowSet也支持预编译的Statement。是结果集的子接口,为快速开发而设(目前还不够成熟,没人用)。
        RowSet中的方法大致上和ResultSet相同,当需要使用时请查阅JAVA API参考文档。

八、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        处理不了,或者要让调用者知道;
      B. try … catch   能自行处理,就进行异常处理。

二、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、 多对多关系,多对多关系是通过中间表来实现的,中间表引用两表的主键当作联合主键,就可以实现多对多关联。





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -