JR 精品文章 - 全新的数据持久层解决方案
AD: jr (at) javaresearch.org


首页 | 动态 | 文章 | FAQ  | 新闻 | 下载 | 代码 | 工作 | 调查 | 术语 | 站点 | 图书 | 论坛 | 帮助 | 全部  

TOP | 交流 | 软件 | 专栏 | 开源 | 译/著 | 源码 | API  | 推荐 | FTP  | 积分 | 统计 | 搜索 | Blog | 我们  
首页 » 研究文集 » 开发框架 搜索标题相关文章 搜索标题相关文章    评论此文章 发表评论     开始监控此文章 开始监控   加入收藏夹  加入收藏夹
全新的数据持久层解决方案
lihy70 原创   更新:2007-03-04 00:57:40  版本: 1.0   

向大家介绍一个在开发过程产生的一个数据库持久层解决方案.
项目的名称:dbcoat, 可以到访问:http://sourceforge.net/projects/dbcoat.
本方案的理念:
1,简单
2,容易学,容易用。
    在五到十分钟就可以学会,用户手册只有几页。
    ‘你会不会***?‘ 不再成为一个问题。
3,舒心顺手
     就像它的名字,希望它能像一件为你订做的外套。

支持的功能:
1,连接池
   连接池支持断开自动重新连接,数据库连接支持‘时间’特性。
2,缓存(Cache)
   1), Cache 是自我管理的,也就是说Cache会自动更新,Cache也有时间限制,
      如果限制的时间到了,Cache会被自动删除。

   2), 条件Cache. 举例来说,像下面这样设置cache option:
       // options.put(Cache.CACHE_RESULT_CONDITION, Cache.condition(8, 100, 2));
       上面代码的意思是:
       当结果集的数量(size)等于大于8并小于等于100
       或搜索的时间大于2毫秒时才缓存结果集
       条件cache可以让你只在真需要时缓存结果

    3), 片断结果集cache. 举例来说,你要浏览10000条结果集,每页200个
        像下面这样设置cache option:
       // options.put(Cache.CACH_RESULT_RANGE, Cache.range(0, 200, 200, 400, 9800, 10000));
       或// options.put(Cache.CACH_RESULT_RANGE, Cache.range(0, 400, 9800, 10000));
       上面代码的意思是:缓存第一页,下一页和最后一页的结果集。
       片断结果集cache可以让只缓存必要的结果集。

       条件和片断结果集cache可以让你有效地用好cache.

    4), 结果集相同的共享同一cache.
        假设有100条纪录,id从1到100,
        由条件'id >= 1' 和 'id <= 100' 创建的结果集共享同一cache, 如果缓存他们。

3,支持join

4, 支持数据库函数:count, avg 等。

用户导向:
1, 准备连接工厂。有两种方式:
    a), 写一个像下面xml文件:
        <?xml version="1.0" encoding="UTF-8"?>
        <connection>
        <driver>com.mysql.jdbc.Driver</driver>
        <url>jdbc:mysql://localhost:3306/coatTestdb</url>
        <user>root</user>
        <password></password>
        <poolCapability>1000</poolCapability>
        <autoReconnect>true</autoReconnect>
        <poolAutoReconnect>true</poolAutoReconnect>
        <!-- unit is milliseconds. following value means one day -->
        <limitedTime>86400000</limitedTime>
        <!-- unit is milliseconds. following value means 5 minutes -->
        <maxInactiveTime>300000</maxInactiveTime>
        <!-- unit is milliseconds -->
        <evictDelay>3000</evictDelay>
        <lockTimeOut>1000</lockTimeOut>
        </connection>
         创建连接工厂:
        ConnectionFactory connFact = ConnectionFactory.newInstance(new FileInputStream(
                new File(propsFile)));
    
    b), 在代码里设置连接属性:

        Properties props = new Properties();
        props.setProperty(DRIVER, driver);
        props.setProperty(URL, url);
        props.setProperty(USER, user);
        props.setProperty(PASSWORD, password);
        ......
        ConnectionFactory connFact =  ConnectionFactory.newInstance(props);

2, 准备持久对象定义文件:
        ......
        Connection conn = connFactgetConnection();
        Database database = new Database(databaseName, conn);
        if (objectDefinitionsFile.exists()) {
            objectDefinitionsFile.delete();
        }
        objectDefinitionsFile.createNewFile();
        
        OutputStream ou = new FileOutputStream(objectDefinitionsFile);
        Assistant.database2ObjectDefinitionXml(ou, database,
            HelloCoatBase.class.getMethod("columnName2PropName",
                new Class[] { String.class }));
        ou.close();
        ......
   详细信息查看'helloworld' 例程:
        http://sourceforge.net/projects/dbcoat

3,用上面准备的连接工厂和持久对象定义文件,创建持久对象管理(POManager)实例。
   POManager om = new POManager(new FileInputStream(objectDefinitionsFile), connFact);            

4,创建持久对象管理(POManager)实例管理持久对象。
   详细信息查看'helloworld' 例程:
        http://sourceforge.net/projects/dbcoat


版权声明   给作者写信
本篇文章对您是否有帮助?  投票:         投票结果:     13       0
作者其它文章: 作者全部文章
评论人:xuezelinhai2005 发表时间: Mon Mar 05 22:34:52 CST 2007
好东东

这个文章共有 1 条评论
主题: XP系统出现 设备管理器 网络连接 空白的解决办法 上一篇文章
返回文章列表 返回〔开发框架〕
下一篇文章 主题: Struts 2


文字广告链接
        自主、快速定制基于JAVA的B/S业务系统          重量级企业在线自定义WEB报表平台
        Excel制表、零代码发布、打印、图表结合——快逸报表,免费、稳定、功能强大的java工具
        技术圈: 关于Java、dotNet、PHP、Ruby、奇客、Web2.0等更多资讯博客精选文章

关于 JR  |  版权声明  |  联系我们 

©2002-2006 JR 版权所有 沪ICP备05019622号