论坛首页 入门技术论坛

世界本可多些选择(研究下轮子)

浏览 13790 次
该帖已经被评为新手帖
作者 正文
   发表时间:2008-07-14  
DAO
离开了hibernate我们能活不?三个月过去了,从当初的要死要活,到现在的自力更生,重做功能类似的工具(说框架我不好意思,题目上引用hibernate都惭愧!),我成长了~~
我怕写sql语句,我怕写数据连接关闭语句,代码拷贝??我挺懒的 碰巧给我的任务又挺多,10来张表,我的天啊!为什么就不能用hibernate?数据表字段的增减变换都得改好多地方,需求比较简单,时间也紧,我改怎么办?
天无绝人路,咱自己造轮子,就是不当搬运工!
我的轮子主要功能:sql自动生成(oracle是公司坚持用的,所以只针对它写特定的sql),自动返回vo和list类。经过一个晚上的思考(包括梦里),有了思路:
1,自动生成sql基本没啥问题,基本就是玩字符串和java反射,整理了下知识,一个上午搞定。这里利用两个字符数组来表示数据表与java类的对应。
private static String[] tables={"表名","ID","ACCOUNT","CREATTIME","IMAGE","INTRODUCE"};
private static String[] attributes={"42322","id","account","creatTime","image","introduce"};//首位标识属性的类型

2,单独执行增加,删除,修改的sql返回值都为boolen,所以利用公用的链接数据库操作类DBConnect便可。
3,返回一个实体类,阿哦,有点难,java反射还是功力不到。百度谷歌半天,我这里抽那里取,写成了俺的文章 这里做得挺无耻,不许别人用的时候颠倒前面传递的两个字符数组次序,想用俺的就听俺的。字段类型也就只有int,string,date三种,因为我发现别的xdjm没有用到其它的,没有就不写,嘿嘿。
4,在返回实体类基础上返回list。不用多少工夫了,搞定!
xdjm用上觉得不错,我也心满意足了。休息,休息~~代码如下:(只写了一个类,先写函数名吧,估计大家也能猜出怎么个写法了吧)
public static String addSql(String[] tables, String[] attributes, Object vo)
public static String delSql(String tables, Object vo)
public static String updateSql(String[] tables, String[]attributes,Object vo)
public static Object getVo(String[] attributes, String sql,Object vo)
public static List getList(String[] attributes, String sql,Object vo)			
   发表时间:2008-07-15  
1、接口比较模糊,维护项目的人比较惨。
2、功能有限。如果我要连接查询一个实体,例如一编文章Article,Article下有个User属性,你这个User属性怎样映射?
3、不用Hibernate,可以考虑Spring的Jdbc框架阿?你们的公司规定完全不用外来代码吗?
0 请登录后投票
   发表时间:2008-07-15  
1,只是一个工具类,代码200多行。实现功能为sql生成,与查询pojo类以及其list返回。所以项目人员可以选择用,也可以选择自己来做上面的事情。维护肯定只有本人来了。
2,这个功能已经实现。
public static Object getVo(String[] attributes, String sql,Object vo)//传递参数为pojo描述数组,查询sql(写了个vo查询自动生成sql函数),pojo对象(你需要在调用改函数前新建一个Article类传递过来)
返回查询实体类功能已经实现,有兴趣可以给源代码给你参考。
3,这个也是我最头大的问题,我不是主管人员。Spring+strutr2已经在用了ExtremeTable也在用,但是主管人员坚持不用Hibernate,我只能尽量在个人能控制的范围内来实现减少重复性工作。
0 请登录后投票
   发表时间:2008-07-15  
Hibernate可不仅仅是你说的这三个功能,被称为框架而不是工具是有道理的
0 请登录后投票
   发表时间:2008-07-15  
仔细看了下,第二点没有实现,不好意思。你从数据表往上走,我的工具类是可以满足对该表的CRUD操作的,具体的业务实现实体,放在业务逻辑层解决吧!
0 请登录后投票
   发表时间:2008-07-15  
Joo 说得好,没有看我自己都称为工具类吗?Hibernate如果能够实现按需抽取就爽了,我现在只需要这几个功能,难道所有的功能你都会用吗?这就是为什么我们项目代码20%,框架80%的原因了~~
0 请登录后投票
   发表时间:2008-07-15  
不单是这些 事务管理 乐观锁 应用缓存难道你都自己手写吗
另外,Hibernate里面不也有动态生成sql吗 不知道为什么你需要自己实现一个?
0 请登录后投票
   发表时间:2008-07-15  
Joo我不是主管人员,我个人也非常喜欢用Hibernate!但是项目经理不允许用,我也有很大的抵触,所以为了减少我的手工代码量,写这样一个工具类是一个特殊情况下的特殊工作,这个工具也确实起到了减少重复性工作的作用,只是想给大家提供一种思路,一些框架只知其然,不知其大概所以然(知其所以然估计很少人能做到)。
0 请登录后投票
   发表时间:2008-07-15  
的确还很粗糙,不过自己动手做工具的劲头不错。
0 请登录后投票
   发表时间:2008-07-21  


像你这样想,完全违背的hibernate的概念,hibernate里面的很多的代码于逻辑的控制,都是按照国际化的标准惯例来做的,而像你那做的化,完全违背了国际化软件思想(面向对象思想),你的观点明显是概念化。会给软件带来很多的后患。
例如,平台的升级,维护。
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics