您的位置:首页 > 数据库

JDBC 笔记(4)

2016-06-28 11:01 330 查看
JDBC第四天

上午:

一.SQL3中的数据类型

Array:数组

Sturct:结构

大对象:

Blob:大的二进制数据文件对象。

Clob:大的文本文件对象。

优点:

1.理论上大小没有上限,受制于数据库表空间的大小.

2.流式读取.

使用大对象的步骤:

1.先插入一个空的占位对象empty_blob()(oracle的函数):insert into t_blob values(?,?,empty_blob());

2.获得大对象:select blob_data from t_blob where name = ? for update;

3.获取流进行写入:blob.setBinaryStream(0);

4.通过流来获取blob中存储的数据:blob.getBinaryStream()

二.JDBC2.0扩展

1.JNDI(JAVA命名目录接口)也用于存储数据,但是他所存储的是一些零散的信息,只提供简单

的API进行读取,需要服务器。

     JDBC                                JNDI

       |                                  |

    JDBC接口                           JNDI接口

       |                                  |           

      驱动                            服务提供者

       |                                  |                  

    数据库                           fs,dap,注册表

2.数据源:

包含了连接数据库所需的信息,可以通过数据源的getConnection()方法来获得数据库连接。

a.连接工厂.

b.共享:服务器端维护,客户端使用.

bind(String name, Object obj) 将名称绑定到对象资源,建立指定的字符串和对象资源的关联

lookup(String name) ,通过指定的字符串获得之前绑定的资源

下午:

3.连接池:

保持连接池中有指定个数的连接,并在程序使用过之后不关闭连接,再放回连接池中等待其他的程序在需要时来取用,

这样可以大量的节省销毁和创建连接的资源消耗。

4.分布式的事务:

分布式事务是针对多个不同数据库同时操作,要保证原子操作的不可分,事务的提交和回滚交给中间服务器来处理。

(两阶段提交),也就是在中间服务器发送sql语句等待数据库回应,都回应操作成功才提交,否则同时回滚。

5.RowSet:

行集:增强了ResultSet的功能,通过RowSet可以获得数据源,并且它还可以使用RowSet的方法。

CachedRowSet能够自动得到连接和断开连接.

6.CallableStatement:

CallableStatement是可以用非sql语句来访问数据库,他是通过调用存储过程(PL/SQL)来访问数据库的,这样保证安全.

可以使用com.prepareCall(存储过程名)方法,来执行这个存储过程。

缺点:

1.可移植性差

2.速度上的优势并不明显

三.Object-Relational-Mapping

1.对象id(OID)使用高低位算法先产生高位,再产生低位.

2.类应当对应到表,属性对应到字段,对象对应到记录,类之间的关系对应到表之间的关系.

3.类继承关系对应表的三种情况:

a,每个类建一个表,为父子类都创建对应的表,这样会共享主键,如果类比较多就不适合了.

b,只有对子类才建表,也就是把父类中的属性均匀分配到子类的表中,这种表关系不能使用多态

c,所有类对应于一张表,这种方法是通过加上一个字段来区分父子类,这种表关系

只能适用于类属性较少的情况下,而且数据会有冗余。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库