自己动手写框架

来源:互联网 发布:三国志11知乎 编辑:程序博客网 时间:2024/04/28 06:49

今天开始将日记内容记录在这里。日记记录的是自己的一些想法的流动,发上来是为了防止日记丢失。

——————————————————————————————————————————————————————————————————————————————————

第一步:连接数据库

.LOG
17:35 2012-1-13
看了余浩东的关于他的BJAF的书,想说自己边看边写,弄一个自己的框架,当做学习之用。
17:39 2012-1-13
第一天是关于数据库的连接的封装。主要的思想就是将jdbc的底层操作封装起来提供更方便安全的接口。
主要考虑的地方在于连接池的管理。可以一次建立n个连接,当不够时,重新建立n个连接。当重新再创建连接的时候可能造成性能问题,所以可以对连接进行监控从而实时地创建连接。
14:43 2012-1-14
将对数据库的连接弄好了,用mysql测试,没有使用其他数据库。麻烦的地方在于要手动添加各种数据库的驱动包,不知道能不能通过什么方法来解决。
另外,目前的所有异常只是直接输出异常信息,没有抛出。
23:04 2012-1-14
关于连接池的维护和最大连接数的问题讨论。连接池当请求不到连接的时候将会重新添加连接,并没有考虑是否超出最大连接数。而内建的监控线程会周期性地对已经关闭的连接清除出连接池,并重新添加连接,使连接维持在最小和最大连接数之间。另外一个问题是,当前的连接是由使用者来关闭的,而不是框架自动关闭(仅在关闭连接池的时候会关闭全部连接)。
这样的话可能会出现连接数超过DBMS设置的最大连接数的情况。为了解决这个问题,应该使getConnection()函数能够抛出异常,当连接数超出的时候通过异常来通知用户。并且要求在初始化连接池的时候必须使设置的最大连接数等于DBMS实际上的最大连接数

19:03 2012-2-24

关于数据库的驱动程序放置位置:将整个jar放在/java-6-openjdk/jre/lib/ext 中即可。

对底层操作的封装:底层操作主要包括:Connection, DriverManager, statement, ResultSet。处理对数据库的连接、执行,包括对抛出异常的处理,使使用者不用处理这些异常,不用跟这些底层api打交道。


22:45 2012-2-26

有两个问题。

1、对于异常的处理原则。对底层操作进行封装的原因之一就是为了处理那些频繁出现的try/catch语句,那么当出现异常的时候应该怎么处理呢?我想到了两种做法:第一种是选择性地抛出检查异常,而对于一些异常则由框架自己处理;第二种是将所有的检查异常转化为运行时异常,从而使用者可以自己选择是否捕捉该 异常,框架在异常发生的地方做记录(log),并将异常转化为RuntimeException抛出。

我选择了第二种方法,这样的话使用者可以更灵活的使用异常。而对于异常发生的地方,使用者应该是事先有准备的,比如说请求连接数可能超出已有连接数,这时候使用者就应该使用try/catch语句来捕捉异常并进行相关处理。使用者可以通过测试来发现哪些地方应该处理异常。

2、对ResultSet的封装。ResultSet是一个接口,只能够从statement中获取;当statement关闭的时候Resultset会自动关闭。但是最好是当使用完结果集的时候手动关闭结果集。所以应该封装对结果集的操作,使其可以在必要时候关闭,在不需要的时候自动关闭。而由查询操作获取的结果集,事实上可以看成一个二维表加上一些关于结果集的元数据。关于结果集内容的获取操作也属于底层操作,应该封装起来。做法是使用一个一维数组来保存元数据,用一个二维数组来保存查询结果。问题在于,当sql语句返回的数据集过大的时候,将会消耗大量的内存空间。

或许可以使用两种不同的封装,一种不关闭结果集,而仅仅封装对结果集的获取和关闭操作,另一种将结果集的信息提取出来之后关闭结果集,数据存放在数组里面。这样,当使用可能返回大量数据的sql语句,可以使用第一种结果集,当使用仅返回少量数据的sql(比如在O-R映射的时候),可以使用关闭的结果集。

而事实上,sun公司出的RowSet对上面的两种方式已经有类似的实现。


16:00 2012-02-29

关于结果集过大的解决方法。今天看了书发现,可以使用分页方式来获取结果集,具体实现是使用sql。具体的sql语法因数据库的不同而不同。比如在MySql中,语法是:

QUERY_SQL limit ?,?

第一个?是行号,第二个是返回的数量。

还可以使用存储过程,但是存储过程语言没学,看了也不大懂。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 3岁宝宝吃饭不香怎么办 胃ca吃饭反胃没食欲怎么办 12岁儿童脸色发黄怎么办 胃饿 但是没食欲不想吃饭怎么办 牙缝大经常塞西怎么办 吃肉老是塞牙缝怎么办 宝宝光喝奶粉不吃饭怎么办 九个月宝宝缺维c怎么办 九个月宝宝缺维d怎么办 9个月大宝宝缺锌怎么办 三周岁宝宝不爱吃饭怎么办 一周岁宝宝不爱吃饭怎么办 两岁半宝宝不自己吃饭怎么办 3岁宝宝不会吃饭怎么办 节食减肥胃疼怎么办呢 减肥不吃饭胃疼怎么办 过度节食伤了胃怎么办 3岁宝宝啥也不吃怎么办 1岁多宝宝不吃饭怎么办 胃口吃辣的难受怎么办 空腹吃辣椒胃疼怎么办 吃东西辣的胃口疼怎么办 吃辣的东西胃烧怎么办 吃母乳的宝宝不爱喝水怎么办 三个月宝宝不肯吃奶粉怎么办 三个月宝宝不肯喝奶粉怎么办 三个月的宝宝不肯喝奶粉怎么办 三个月的宝宝不肯吃奶粉怎么办 饿了还是没食欲怎么办 3岁半幼儿便秘怎么办 小孩字写得难看怎么办 小孩的字写的丑怎么办 小孩字写的太差怎么办 小孩很多字不会写怎么办 食欲不好吃不多怎么办 中班小孩子子不肯写字怎么办 1岁宝便秘该怎么办 两周的宝宝便秘怎么办 3岁宝宝不肯吃药怎么办 1岁婴儿不肯吃药怎么办 9月婴儿不肯吃药怎么办