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