`
drinkjava2
  • 浏览: 40831 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论
文章列表
本文介绍的方法基于多叉树的前序遍历序列,是所有数据库树结构存储方案中查询子树速度最快的方案。最早发表在这里"http://drinkjava2.iteye.com/blog/2353983",但那篇文章太啰嗦了,这是整理后的精简版,其实原理很简单,几 ...
历时一年开发,Java持久层工具jSqlBox终于推出第一个正式版本1.0.0版。详见项目地址:https://gitee.com/drinkjava2/jSqlBox, 以下为项目内容简介: jSqlBox是一个Java持久层工具,设计目标是用来代替目前的Hibernate/MyBatis/JdbcTemplate/DbUtils等持久层工具。jSqlBox的主要特点:     模块化设计。 jSqlBox将Jdbc工具、事务、方言和数据库脚本生成等功能分成子模块,由不同的子项目实现,每个子项目都可以脱离jSqlBox存在,甚至可供其它ORM工具使用,避免重复发明轮子。同时jSqlBox的 ...
因为在做持久层工具开发,现总结一下各种SQL的写法,也算是清晰一下自已的思路: 第一种写法 public void someMethod(){ try    Connection conn=...;    conn.setAutoCommit(false);    PreparedStatement pst=...;    ResultSet rs= executeSomeSql("some sql... ...
(2018.1.21注:本文已过时,又找到一种好一点的利用注释支持多行字符串的方法,见https://my.oschina.net/drinkjava2/blog/1611028 ) 从BeetlSql项目将SQL全放在Beetl模板里得到启发,又想到一个比较偏门的用法。以下代码实测通过,详见jSqlBox项目的test\examples\multipleLineSQL\SqlTemplateDemo.java源程序,此示例特殊点在于:运行时必须将此源程序拷贝一份在类根目录(或Maven管理的Resource目录下), 并将后缀".java"改为".sql&quo ...
jDialects(https://git.oschina.net/drinkjava2/jdialects)是一个收集了大多数数据库方言的Java小项目,通常可用来创建分页SQL和建表DDL语句,可根据不同的数据库方言生成不同的SQL。目前jDialects支持75种数据库方言,包括Hibernate中没有的SQLLite和Access等。jDialects需要 Java7或以上版本支持。 jDialects起初是为了jSqlBox项目而开发的,但它本身是一个独立的项目(发布包只有90k大小且无其它第三方依赖),只要用到了SQL,就可以利用它来创建对应数据库的分页SQL和DDL。例如使用了纯 ...
最近在开发jSqlBox过程中,想研究一下树形结构和VO对象树的转换,突然发现一种新的树结构数据库存储方案,在网上搜索了一下,没有找到雷同的(也可能是我花的时间不够)方案,现介绍如下: 目前常见的树形结构数据库存储方案有以下四种,但是都存在一定问题: 1)Adjacency List::记录父节点。优点是简单,缺点是访问子树需要遍历,发出许多条SQL,对数据库压力大。 2)Path Enumerations:用一个字符串记录整个路径。优点是查询方便,缺点是插入新记录时要手工更改此节点以下所有路径,很容易出错。 3)Closure Table:专门一张表维护Path,缺点是占用空间大,操作不直观 ...
顺便说一下一个老帖子:http://www.blogjava.net/GandofYan/archive/2006/05/30/48954.html关于domain object的讨论,其中的领域逻辑用E-R建模来表示是这样的: Bid的建立需要满足3个约束条件,仅此而已。 那个贴子中有这样一句 "this.getBids().add(newBid); 在没有Hibernate/JDO这类可以实现“透明的持久化”工具出现之前,这类domain logic是无法实现的"。事实上,如果采用E-R建模,这个问题压根就不存在,至少用这个例子来说明透明持久化(再说一遍透明持久化的本 ...
下面这个类默认使用JDK自带的logger,如系统存在org.apache.commons.logging则动态加载并用反射来调用,如进一步,系统中还存在Log4j及其配置,则自动使用Log4j代替commons logging, 这样程序包发布时根本无须将commons logging或log4j放在POM中。 package com.github.drinkjava2.jsqlbox; import java.lang.reflect.Method; import java.util.logging.Level; import java.util.logging.Logger; ...
再摘一段JDBC多条件查询的单元测试实例(源码可在jSQLBox项目下找到),大家知道在条件不确定的情况下,执行动态拼接生成的SQL,即要保证SQL安全性,防止SQL注入,又要保证编码的简洁性,这一直是一个头痛的问题。 jSQLBox利用ThreadLocal解决了这个问题: Java代码  收藏代码     public class ConditionQueryTest {          @Before          public void setup() {              TestPrepare.dropAndRecreateTables();          ...
冒个泡,jSQLBox项目已启动,欢迎有兴趣的加入:https://github.com/drinkjava2/jSQLBox jSQLBox项目要完成的基本功能有: CRUD方法、 JDBC包装、一级缓存、脏检查、纯JAVA方式配置,配置可动态生成修改。 在jSQLBox编写过程中,刚完成对JDBC的包装,突然发现一种超简单的将SQL包装成PrepraredStatement的方法,利用ThreadLocal将参数暂存,从而将字符串连接的SQL自动包装为PreparedStatement从而实现防SQL注入,提高性能,且不损害SQL的可读性。 这个比较好, 如果软件怎么写也可以申请专利的话, ...
前言:最近jBeanBox项目收尾,感觉用Java初始化块来代替Spring的XML配置这种模式挺好的,手中有了这把锤子,于是看什么都象钉子,这不,又看上了Hibernate,  SSH三兄弟,紧跟在Spring后面,也是用XML或Annotation配置,配置也是固定的 ...
Spring的问题主要是太复杂、配置方式太多,XML配置不支持运行期修改,不支持IDE类名重构、方法提示。jBeanBox是一个单文件源码只有650行的IOC/AOP微型项目,特点是用JAVA代替XML, 简单易懂。目前版本更新到2.0版,添加了AOP联盟和AspectJ接口支持以与其它AOP工具兼容。 声明式事务是AOP的典型运用场合,基本原理是利用线程局部变量来管理连接,本想自已写一个简化版的,但一来水平有限,二来AOP的特点就是服务和内核是插拔式设计,内核和服务可以单独使用。Spring中提供的其它业务支持如 ORM、JTA、JMS等理论上都可以抽取出来在其它IOC/AOP工具上使用,如果 ...
这是十几年前的一些想法,现在看来有些已过时,有些成了预言。 很不习惯带着脚镣跳舞,时间长了会形成条件反射怎么办。 1.人还会进化吗? 2.什么是生命? 3.什么是我? 4.共主义不可能实现? 5.人长生不死的唯一途径? 6.人造不出比自已更聪明的机器? 7.作为创造者,人是不会让聪明的机器夺得统治权的? 8.A之后是B 9.人=物质+人脑神经网络构成方式 10. 生命进化的最终形式? 11.关于时间机器 12.机器智能的存在形式 13.构造智能生命系统的方法及其内部规律之若干猜想 14.意识是什么? 15.为什么机器人不可能有意识? 16.关于围棋,关于人机对话 17.关于生命保护组织 18. ...
理论太枯燥了,以下是我平时的一些科幻构思,全是与人工生命有关的,因本人文笔太差,只能给出个草草的框架 (注:前三个构思曾发表在96年第二期的科幻世界上)。 ☆绑架 当生命可能以信息方式传递,队长带人在地底打算拦截敌方将领的中微子波,以实现绑架其之目的,但接收器坏了,最后队长决定用自已的大脑来接收这个信息,于是,当信号被拦截后,队长就变成了敌人的将领...... (自评:这算是生命复制的一个插曲吧,“我”为什么不是“你”?,区别只是脑细胞的排列方式不一样而已。) ☆左和右 左和右是某个蓝球队里的主力,他们两人的配合天衣无缝,只有有他们同时上场,球队就战无不胜。一个偶然的机会,人们发现了他们的 ...
这是二十年前寄给科学院的一篇旧文,大家可以对比看看,关于人工智能,二十年前的人和现在的人是怎么想的。原稿扫描存在造人论坛上。 人类还会进化吗?-谈机器智能发展前景 近年来,随着机算机技术的迅速发展,神经网络、系统论、控制论、非线性理论以及认知科学不断取得突破性进展,使得人们对生命现象的研究进入了一个前所未有的阶段。但是,对于“生命的本质是什么”、“生命的发展有没有最终目标?”、“人类作为生命体还会发展吗?”、“人类最终前途是什么?”这一类问题却始终不能给出明确的答复。下面我将谈谈我个人对这些问题的理解,我的看法中带有不少主观猜测,因此科学性不是很严密,只不过希望借此文引发人们对生命更深层次的 ...
Global site tag (gtag.js) - Google Analytics