论坛首页 Java企业应用论坛

对DAO的一些想法,附加代码(更新20091216)

浏览 10287 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-12-14  
tibetjungle 写道
  与框架相比,lz的做的是Java类属性与db表字段的映射,目前可以生成select语句,如果lz愿意,还可以扩展完成cud功能。不过我有几个问题:
1、如果我是调用存储过程,存储函数怎么办?
2、如果生成的sql效率不高,怎么优化(hibernate的短板之一)?
3、事务如何控制?
4、缓存呢?

  我觉得这些都是做框架要考虑的问题。

呵呵,我是新人,刚开始学东西。这些简单的问题可以让我学到很多东西。
0 请登录后投票
   发表时间:2009-12-15  
z494627 写道
我怎么越看越像我写的VB代码了呢?


冲这点,下载下来看了下.
0 请登录后投票
   发表时间:2009-12-15  
或者试试对象流(组建一个内部服务器)
0 请登录后投票
   发表时间:2009-12-15  
我没有下载LZ的代码看 , 但是我大概能猜出来你写的什么。其实把一些对数据库操作的一些框架学好 ,把原理搞清楚 ,自己写个也不错。。
0 请登录后投票
   发表时间:2009-12-16  
ldinh 写道
感觉是annotation的另一种实现。
放弃了使用语言特性,可做的并不比他多,当元数据描述的内容增加,Mapping对象将变得臃肿。
对于表字段修改,注解需要改的,Mapping对象一样需要修改。查询语句,同样是运行时检查,hibernate也有类似的对象查询接口Criteria。
至于Annotation的侵入问题,我认为既然决定使用一个ORM实现,就很少会去改变它,如果想灵活,可以使用JPA。
个人觉得应该还有很多需要改进的地方。


当元数内容增加时,任何一个框架都需要跟新。这是不可避免的,只是操作方法不一样。这样操作是否会引起错误才是最关键的。hibernate修改xml很容易,但是你敢保证你所有的hsql都会被修改吗。而我的框架会,因为它是面向对象的,可以借助ide将错误扼杀在编译层。mapping配置臃肿也是因为你的表格臃肿,队同样的pojo做配置,xml就要比java苗条?
0 请登录后投票
   发表时间:2009-12-17  
syinhb 写道
夜神月 写道
大概看了一下你的代码 将配置文件换成了一个java类 里面大量的应用了反射机制 对效率不太好吧


使用反射,是有效率问题。尤其是annotation之后,反射的使用更是大大增加。但是要看目的是什么,我觉得安全,OO,减少入侵是更重要的。



现在ORM框架都缓存了配置信息,所以annotation只解析一次,效率应该还是可以的
0 请登录后投票
   发表时间:2009-12-17  
楼主这个还不错,不过如果是大的产品涉及到的层次众多,框架也不少,所以元数据驱动还是必要的
0 请登录后投票
   发表时间:2010-01-08  
支持原创!架构的全面性有待改进哦!
0 请登录后投票
   发表时间:2010-03-27   最后修改:2010-03-27
JavaLanguageFun 写道
我没有下载LZ的代码看 , 但是我大概能猜出来你写的什么。其实把一些对数据库操作的一些框架学好 ,把原理搞清楚 ,自己写个也不错。。


我也和楼主一样菜菜地写自己的持久化组件,每次在JE上发帖子都是被投新手帖、隐藏帖之类的,都害怕说话了。

主要是牛人太多了。

这是我做的效果:







组件的日志记录器级别为DEBUG时的控制台输出:

2010-03-27 02:03:15,812 main DEBUG [com.china.codingmouse.cmsdk4j.dao.sql.generator.SQLGenerator] [CmSdk4j Auto SQL Generator In 2010-03-27 02:03:15.812]
SELECT accountid, accountname, onlinecount, birthday, loginname, loginpassword, email, accountstate FROM account WHERE accountname LIKE ? AND accountid <> ?
------------------------------
2010-03-27 02:03:15,984 main DEBUG [com.china.codingmouse.cmsdk4j.dao.converter.DataTypeConverter] [SQL Parameter List Information In 2010-03-27 02:03:15.984]
No:1
Type:java.lang.String
Value:邓%
------------------------------
2010-03-27 02:03:16,000 main DEBUG [com.china.codingmouse.cmsdk4j.dao.converter.DataTypeConverter] [SQL Parameter List Information In 2010-03-27 02:03:16.0]
No:2
Type:java.lang.Integer
Value:1
------------------------------

[ accountid = 7, accountname = 邓远辰, onlinecount = 429, birthday = null, loginname = ChengCheng, loginpassword = chengchengpwd, email = chengchengdream@gmail.com, accountstate = true ]

还在改一些细节问题,比如添加兼容MS SQL Server、Oracle、DB2、MySQL四款数据库存储过程调用的接口。
我也只对单表做了ORM,没看楼主的实现细节,估计也没有处理关联映射逻辑吧。

  • 大小: 391.5 KB
  • 大小: 419.8 KB
0 请登录后投票
论坛首页 Java企业应用版

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