到 Google 资讯主页   
EasyJF首页   资料   源码   软件    论坛   网站    
   使用帮助    
    该信息为本站MyRSS系统缓存内容,部分图片及附件有可能无法正常使用.easyjf.comwww.javaresearch.org无关,不对该信息负责.通过http://www.javaresearch.org/article/63543.htm访问该信息的原始内容.
页面功能  【加入收藏】 【推荐给朋友】 【字体:  】 【关闭】   
全新的数据持久层解决方案
作者:xuezelinhai2005 来源:www.javaresearch.org  发布时间:2007-03-12 00:28:18.967


向大家介绍一个在开发过程产生的一个数据库持久层解决方案.
项目的名称: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


 
相关文章
 
页面功能  【加入收藏】 【推荐给朋友】 【字体:  】 【关闭】   


EasyJF.com 2006 隐私政策 使用EasyJF前必读