`
shanghui_12
  • 浏览: 24845 次
  • 性别: Icon_minigender_1
  • 来自: 海口
社区版块
存档分类
最新评论

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

阅读更多
离开了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)			
分享到:
评论
41 楼 javagun 2008-09-03  
AllenZhang 写道
怎么这种文章都存在。有讨论的必要么。
写点sql值得哇哇叫么


你认为什么文章该存在,xx样儿!!
40 楼 wmteo77 2008-08-25  
支持以下
39 楼 fan-R 2008-08-23  
能够动手造轮,首先在精神上给予支持
38 楼 aqining 2008-08-23  
类似的方式我也用C#写过,其实项目怎么做,都无所谓了。只要记住是你在用工具,而不是工具在用你就好了!
37 楼 。。。 2008-08-18  
深受其害。 Boss某天做了个美梦, 可怜了程序员就得跟着开始做噩梦。
daquan198163 写道
最痛恨技术官僚,拍脑袋做决定,然后由别人买单

36 楼 WithMemores 2008-08-18  
dunsword 写道
Gavin King也是在老板的质疑中发明了Hibernate,没准LZ也能发明一个,呵呵。
关键是你确实发现了Hibernate的不足,并且确信能够创造一个更好的轮子么?

理论上说凡是能使用JDBC的地方Hibernate完全适应。有必要在搞个什么?
35 楼 congpeixue 2008-07-24  
shanghui_12 写道
离开了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)			


生成对象方面, 建议看下common dbutil jar包, 稍微该下 基本就可以了 。
34 楼 lqql 2008-07-24  
drinkjava 写道
lqql 写道
drinkjava 写道
把Hibernate改成SQLUTI,易如反掌,只要不用它的二级缓存和对象关联就可以了。把你的这个工具类改成支持跨数据库、事务、锁、翻页...,难如登天,所以还是不要发明轮子的好。
当然了,如果项目很小,配Hibernate的时间里都可以用你的工具类完成的,且不考虑今后的功能扩充,那尽管用你的工具类好了。

这个说得有点过了吧,"难如登天"?,从技术上讲,事务,锁,翻页,都没有什么技术问题,只是如何设计能够优雅而已.

嘿,偏偏有人喜欢抬杠,我说发明轮子不好,他就来说发明轮子怎么怎么的容易。废话,要都做到这些了,把Hibernate源码照抄一遍不是最容易吗?

不是吧,你对国外的轮子就这么相信吗?要是别人不发明轮子,我想大概就不会有HIBERNATE有IBATIS有NNN了.
事实上发明轮子很容易,发明个好用的轮子却是件难事.但是别人能做的,事实上我们也能做到.而且就算是功能相通的两个轮子,不同的人造出来完全是两样的,这点你也不明白吗,抄一遍,什么逻辑啊.当初SUN做JAVA的时候,你是不是会说要实现C++的代码比登天还难...要是把C++的特性都实现了,那不是把C++的源码抄一遍就行了!
33 楼 qjzhyf 2008-07-24  
LZ不错,别理JJWW的人了。有你这种想改造的事情的祝福,就是让人敬佩的。
32 楼 kaipingk 2008-07-24  
支持楼主,干得不错,继续努力
31 楼 shanghui_12 2008-07-24  
dunsword 写道
Gavin King也是在老板的质疑中发明了Hibernate,没准LZ也能发明一个,呵呵。
关键是你确实发现了Hibernate的不足,并且确信能够创造一个更好的轮子么?

在什么情况下做事都难啊,综合各方利益(领导与同事),你做出东西来能服务好别人才会被认可,别人不会以你个人意愿来符合你。我的初衷只是想录下这个过程而已,每想到都放首页上去了,惭愧惭愧~~
30 楼 dunsword 2008-07-24  
Gavin King也是在老板的质疑中发明了Hibernate,没准LZ也能发明一个,呵呵。
关键是你确实发现了Hibernate的不足,并且确信能够创造一个更好的轮子么?
29 楼 javaeyename 2008-07-24  
tedeyang 写道
要么用spring jdbctemplate,要么用apahce DBUtil,要么用ibatis
选择多得要死.
自己写一个也没什么麻烦的,不过后续的bug修改和功能完善能让人头大.
如果还有别人来用的话,还必须写完善的文档,我们公司就有人写了个类似楼主的sqlmap辅助类,
还是都用标准的好,大家都简单.
就像不用IE,firefox,偏偏要用些自己写的文本浏览器,那也由得你啦.

是有特定背景的,有一些特定项目,特殊的制度,用户的要求,一些负责人等这样那样的因素,造成了你无法用户标准的轮子呀,只能自己为了省事,在貌似满足这些条条框框的情况下,发明一些相对比较粗糙的轮子自己用。这些无可厚非呀,不要动不动拿标准压人!
28 楼 penghao122 2008-07-23  
呵呵。。精神可嘉


自已写更明白hiberante 框架所考虑过的问题\


捫心自问有多少人真正地用hibernate框架。去考虑过它的设计

及一些问题的分析。用的人比较多。因为有例子.照猫画虎啦。
27 楼 tedeyang 2008-07-22  
要么用spring jdbctemplate,要么用apahce DBUtil,要么用ibatis
选择多得要死.
自己写一个也没什么麻烦的,不过后续的bug修改和功能完善能让人头大.
如果还有别人来用的话,还必须写完善的文档,我们公司就有人写了个类似楼主的sqlmap辅助类,
还是都用标准的好,大家都简单.
就像不用IE,firefox,偏偏要用些自己写的文本浏览器,那也由得你啦.
26 楼 drinkjava 2008-07-22  
lqql 写道
drinkjava 写道
把Hibernate改成SQLUTI,易如反掌,只要不用它的二级缓存和对象关联就可以了。把你的这个工具类改成支持跨数据库、事务、锁、翻页...,难如登天,所以还是不要发明轮子的好。
当然了,如果项目很小,配Hibernate的时间里都可以用你的工具类完成的,且不考虑今后的功能扩充,那尽管用你的工具类好了。

这个说得有点过了吧,"难如登天"?,从技术上讲,事务,锁,翻页,都没有什么技术问题,只是如何设计能够优雅而已.

嘿,偏偏有人喜欢抬杠,我说发明轮子不好,他就来说发明轮子怎么怎么的容易。废话,要都做到这些了,把Hibernate源码照抄一遍不是最容易吗?
25 楼 daquan198163 2008-07-22  
有关复用问题,有两个三倍法则:
(a)构建可复用的组件比使用组件难3倍
(b)在将组件收录到复用库并成为通用组件之前,应该在三个不同的应用中尝试应用该组件”。
——《软件工程的事实与谬论》
24 楼 williamy 2008-07-22  
hibernate,工具而已,喜欢上一种工具,意味着另外的工具就不那么喜欢,呵呵
23 楼 daquan198163 2008-07-22  
最痛恨技术官僚,拍脑袋做决定,然后由别人买单
22 楼 lqql 2008-07-22  
drinkjava 写道
把Hibernate改成SQLUTI,易如反掌,只要不用它的二级缓存和对象关联就可以了。把你的这个工具类改成支持跨数据库、事务、锁、翻页...,难如登天,所以还是不要发明轮子的好。
当然了,如果项目很小,配Hibernate的时间里都可以用你的工具类完成的,且不考虑今后的功能扩充,那尽管用你的工具类好了。

这个说得有点过了吧,"难如登天"?,从技术上讲,事务,锁,翻页,都没有什么技术问题,只是如何设计能够优雅而已.

相关推荐

    五年级科学下册 第1单元 3《轮子的妙用》教案 翼教版-人教版小学五年级下册自然科学教案.doc

    通过本单元的学习,学生不仅能够掌握轮轴的科学原理,还能够学会如何将这些原理应用于解决现实世界中的问题。 总之,《轮子的妙用》这一单元通过科学的视角和实验的方式,使学生在了解轮轴原理的同时,培养其解决...

    科学轮子学习教案.pptx

    教案的核心内容是研究吊车上的轮子,即滑轮系统的工作原理,以及它如何在提升重物方面发挥关键作用。 轮子的分类是教学的起点,教案将轮子分为两类:一类是与负载一起移动的轮子,如动滑轮;另一类则是固定位置,不...

    小班语言:大轮子.docx

    例如,小动物们为什么最终选择将大轮子归还给大汽车?这个过程引导孩子们认识到拾到的东西应该归还给失主,并理解轮子对于汽车的重要性。通过这种情境模拟和角色扮演,孩子们在玩耍的同时,也在无形中接受了诚实和...

    科学《有趣的轮子》教案.doc

    《有趣的轮子》这堂课程,便是通过科学教育的方式,引领大班幼儿走进轮子的世界,不仅让他们认识轮子,更要让他们理解轮子与我们生活的密切关系,以及科学原理如何在其中发挥作用。 首先,课程将带领孩子们追溯轮子...

    五年级下册科学教案 -3 轮子的妙用 冀人版.doc

    2. **观察和设计**:观察真实世界中的轮轴应用,如吊车,识别其中的不同类型轮子。同时,鼓励学生设计自己的简单机械,运用轮轴原理解决问题。 **教学重难点**: 1. **重点**:强调轮轴、滑轮和齿轮等简单机械在...

    “云南师范大学汉藏语研究院文库”总序.docx

    在这样的背景下,云南师范大学汉藏语研究院应运而生,它不仅肩负着研究和传承的使命,更是将汉藏语研究推向国际舞台的前沿阵地。 自研究院成立伊始,即2012年,它就以一系列卓有成效的工作,向世人展示其研究的决心...

    2021年大班科学公开课滚动的轮子教案反思.doc

    在当前教育理念下,科学教育已经不仅仅局限于传授知识,更多的是通过实践活动培养孩子的探索精神和科学素养。"滚动的轮子"这一主题的教案设计,正是基于这样的教育目标,通过一系列精心策划的实验和活动,引导大班...

    【批量下载】Twisted-历史各版本.zip

    总的来说,这个压缩包提供了一个方便的方式来获取Twisted的旧版本,这对于维护旧项目、进行兼容性测试或研究项目的历史发展都是极其有用的。同时,这也是一次了解Python包管理和版本控制的好机会,有助于提升你的...

    Webots搭建麦轮小车1

    在本实验“Webots搭建麦轮小车1”中,我们将学习如何使用Webots仿真软件构建一个具有麦轮的小车模型,并实现其基本的运动控制。Webots是一款强大的机器人模拟软件,允许用户创建、编辑和仿真复杂的机器人系统。 ...

    可变形轮腿式机器人行走机构设计与研究.pdf

    在当今科技迅速发展的背景下,各种可移动机器人在协助人类的工作和生活中扮演着日益重要的角色。机器人的设计通常根据其移动方式分类,大致包括轮式、腿式以及履带式等类型。然而,面对现实生活中复杂多变的路况环境...

    阅读背景知识研究.pdf

    【阅读背景知识研究】涉及了广泛的主题,涵盖了历史、科学、...这些知识点反映了人类对世界多角度的理解和探索,无论是对历史事件的研究,还是对自然科学的洞察,都是托福学习者扩大知识面、提升英语能力的重要素材。

    country-picker-android,一个简单的库,它显示所有国家的美丽列表,允许用户选择他想要的国家,并提供诸如国家代码、ISO代码名称和标志等详细信息。.zip

    在Android开发中,特别是在处理电话号码验证、地区定位或者多语言支持时,通常需要一个直观的国家选择组件。"country-picker-android"就解决了这个问题,它简化了开发者的工作,避免了手动创建和维护国家列表的繁琐...

    移动机器人的研究

    【移动机器人的研究】 移动机器人领域近年来取得了...这些研究成果对于推动机器人技术在现实世界的广泛应用具有重要意义,特别是在自动化运输、环境探索、家庭服务等领域,有望实现更加智能和精准的移动机器人系统。

    基于双目视觉的轮式机器人动态避障研究

    由于提供的文件信息中,【部分内容】部分仅包含重复且无实际内容的字符组合,无法提取出有价值的信息,因此无法从这...通过对这些关键技术的深入研究和不断完善,能够提高轮式机器人在真实世界环境中的自主性和安全性。

    美国数学建模2001年outstanding作品

    这意味着在某些特定条件下,选择正确的轮子类型对于提高比赛成绩至关重要。 #### 结论 这项研究不仅提供了一个有效的数学模型来辅助自行车手或设计师选择最佳的轮子类型,还展示了数学建模在解决实际问题中的重要...

    基于Matlab的平面连杆机构仿真软件的研究.pdf

    关键词中提到的“Matlab”,“平面连杆机构”以及“运动性能仿真”是本研究的三个核心概念。Matlab作为仿真工具,平面连杆机构是被仿真的对象,而运动性能仿真是仿真分析的主要内容。整个研究工作围绕如何利用Matlab...

    Python库 | vurf-0.1.0-py3-none-any.whl

    Python的生态系统庞大且活跃,有无数的开源库可供选择。每个库都有其特定的用途,开发者可以根据需求选择合适的库,或者如果找不到满足需求的库,也可以自己创建并发布轮子文件,为社区贡献新的工具。 总结来说,`...

    igraph 的 Python 接口.zip

    igraph 是来自世界各地的许多人合作的作品——请在此处查看贡献者列表。引用如果你在研究中使用 igraph,请引用Csardi, G., & Nepusz, T. (2006)。用于复杂网络研究的 igraph 软件包。InterJournal,复杂系统,1695...

Global site tag (gtag.js) - Google Analytics