论坛首页 Java企业应用论坛

一次小项目的思考

浏览 52008 次
该帖已经被评为良好帖
作者 正文
   发表时间:2009-08-24  
pipilu 写道
ray_linn 写道
恩 oracle真该羞死啊...

不知道LZ用hibernate去实现过复杂统计,复杂报表么?这时候你会发现hibernate多么力不从心。

仅仅拿个hibernate,就去鄙薄ERwin之类的建模工具,未免浅薄。关系建模有自己的应用场景,存储过程仍然是坚如磐石的东西,牢牢占据了电信、银行、保险等等企业应用的顶峰。



做过报表和统计功能,但没做过“复杂统计”和“复杂报表”。出现报表方面的需求时,我会根据情况看看是不是需要加中间表和存储过程。还没有因为统计或报表“复杂”而去修改原有的表的设计,莫非你们这样做过??



你明白我说的是什么吗?

中间表和存储过程一向是做复杂统计和复杂报表的不二法门,你看过who 用hibernate来做这些事的。


面向对象建模也有一些问题。

1. 人为拆分细小对象,导致表众多,关系复杂,效率低下。
2. 常量数据无法对应到数据库表中,人为导致部分数据缺失,或者得依赖某种ORM以相对复杂的方法实现。
3. 一些特定技术实现难度较大,比如大数据分页,不得不依赖回数据库的特定实现,比如mysql的某些语句。
4. 职责关系不清,程序员取代不了数据库管理员,数据库管理员也不是程序员。
5. 浪费数据库资源,某些强大的数据库能力被浪费。
0 请登录后投票
   发表时间:2009-08-24  
大家在争关系数据库和对象数据库。
我觉得本质上面向对象的同时,降低了性能,也提高了解决复杂问题的能力。
计算机上一切问题的趋势是苦了电脑,解放了人脑。在能不用关系数据库的情况下,就不用。
0 请登录后投票
   发表时间:2009-08-24  
hibernate最终持久化还不是到数据库中了?
我到觉得数据库挺好,的确他不OO了.可是目前的现状和可预见的时间内,
怎么就数据库已死呢
0 请登录后投票
   发表时间:2009-08-24  
从类生产数据库有一个问题,假如你的实体类要加一个字段(你不可能保证你的实体类是不变的),那岂不是又要重新生成一遍数据库?这样的话,你数据库里面的数据就可能没有了。而从数据库生成实体类就可以避免这个问题。
0 请登录后投票
   发表时间:2009-08-24  
ray_linn 写道
楼主去用hibernate去做个总分轧平吧,

横向按账户的借贷方,纵向按科目,科目有借方科目,贷方科目,借贷双方科目,某些科目的借方 要与另外一些科目的贷方相当。

 

     就从这一句就知道你对编程的理解很浅薄,你以为你罗列的zhe这些复杂的条件限制你用个procedure写出来是很强的事?搞清楚,越是复杂的逻辑越是高级语言的强项!要用存储过程完成那些十分复杂的逻辑不论在语言支持上还是库支持上都不行。最简单的道理就是--要是存储过程真的能干,那世界前三的编程语言为什么没有tsql、plsql这些语言?别告诉我说这些语言不能写web,不能写ui什么的,它们都能,可是没人会用它们来完成这些功能。

 

     在中国“结构化查询语言”的意义和“为人民服务”一样都是被理解的变了味道的东西。高级语言好比大客车,sql好比大货车,客车用来载人,货车用来载货, 但在一些地方也能看到一群群的农民工们挤坐在货车后面的车厢上,那能说这就是合理的?货车载人就是“坚若磐石”的真理?还是各司其职才能充分发挥各自的长处吧。

 

     再有,别再拿国内那几个落后的电信bss提供商说事了,他们的架构无一不是购买或抄袭国外90年代的过时技术,它们代表的只是落后而已。at&t和思科前几年个系统构型就已经是领域优先的了。

 

 

0 请登录后投票
   发表时间:2009-08-24  
accphc 写道
从类生产数据库有一个问题,假如你的实体类要加一个字段(你不可能保证你的实体类是不变的),那岂不是又要重新生成一遍数据库?这样的话,你数据库里面的数据就可能没有了。而从数据库生成实体类就可以避免这个问题。

 

 先声明,我是一只非常菜的菜鸟,所以我也不肯定我的理解是否是正确的。

 

关于你说的这个问题肯定是不可避免的,即使你用数据库设计的话也是如此。但是如果用Hibernate这类的ORM工具(我知道Hibernate有正向工程这个工程,其他的ORM我就不是很清楚了),是可以帮助你添加一个表的。而且,如果你想删除某个字段,你之需要在映射文件把相应的字段删除就可以,不需要改变类、也不用去改变数据库的结构,这样可以保证运行时的系统的安全。(当然,删除的一个后果就是你调用实体类对应的属性时,返回值是null)

 

呵呵~关于BANQ那个《数据库已死》的文章,虽然有点标题党,但是我觉得他有很多地方的见解真的很不错,虽然对于国内来讲,属于非主流,而且其人也略显偏激。所以也可以把我算作是他的支持者吧。

0 请登录后投票
   发表时间:2009-08-24   最后修改:2009-08-24
ubotutwin 写道
ray_linn 写道
楼主去用hibernate去做个总分轧平吧,

横向按账户的借贷方,纵向按科目,科目有借方科目,贷方科目,借贷双方科目,某些科目的借方 要与另外一些科目的贷方相当。

 

     就从这一句就知道你对编程的理解很浅薄,你以为你罗列的zhe这些复杂的条件限制你用个procedure写出来是很强的事?搞清楚,越是复杂的逻辑越是高级语言的强项!要用存储过程完成那些十分复杂的逻辑不论在语言支持上还是库支持上都不行。最简单的道理就是--要是存储过程真的能干,那世界前三的编程语言为什么没有tsql、plsql这些语言?别告诉我说这些语言不能写web,不能写ui什么的,它们都能,可是没人会用它们来完成这些功能。

 

     在中国“结构化查询语言”的意义和“为人民服务”一样都是被理解的变了味道的东西。高级语言好比大客车,sql好比大货车,客车用来载人,货车用来载货,但在一些地方也能看到一群群的农民工们挤坐在货车后面的车厢上,那能说这就是合理的?货车载人就是“坚若磐石”的真理?还是各司其职才能充分发挥各自的长处吧。

 

     再有,别再拿国内那几个落后的电信bss提供商说事了,他们的架构无一不是购买或抄袭国外90年代的过时技术,它们代表的只是落后而已。at&t和思科前几年个系统构型就已经是领域优先的了。

 

 


口气好大,差点没把我吓死。

买CICS和Tuxedo的都是傻子吧?

0 请登录后投票
   发表时间:2009-08-24  
ubotutwin 写道
ray_linn 写道
楼主去用hibernate去做个总分轧平吧,

横向按账户的借贷方,纵向按科目,科目有借方科目,贷方科目,借贷双方科目,某些科目的借方 要与另外一些科目的贷方相当。

 

     就从这一句就知道你对编程的理解很浅薄,你以为你罗列的zhe这些复杂的条件限制你用个procedure写出来是很强的事?搞清楚,越是复杂的逻辑越是高级语言的强项!要用存储过程完成那些十分复杂的逻辑不论在语言支持上还是库支持上都不行。最简单的道理就是--要是存储过程真的能干,那世界前三的编程语言为什么没有tsql、plsql这些语言?别告诉我说这些语言不能写web,不能写ui什么的,它们都能,可是没人会用它们来完成这些功能。

 

     在中国“结构化查询语言”的意义和“为人民服务”一样都是被理解的变了味道的东西。高级语言好比大客车,sql好比大货车,客车用来载人,货车用来载货,但在一些地方也能看到一群群的农民工们挤坐在货车后面的车厢上,那能说这就是合理的?货车载人就是“坚若磐石”的真理?还是各司其职才能充分发挥各自的长处吧。

 

     再有,别再拿国内那几个落后的电信bss提供商说事了,他们的架构无一不是购买或抄袭国外90年代的过时技术,它们代表的只是落后而已。at&t和思科前几年个系统构型就已经是领域优先的了。

 

 


tsql、plsql这些语言能写web,能写ui?

 

举个例子好吗?我没看懂

0 请登录后投票
   发表时间:2009-08-24  
Oracle expert tom kyte 的开发经验

对于开发数据库软件,我有一套很简单的哲学,这是我多年以来一直信守的思想:
  如果可能,尽量利用一条 SQL 语句完成工作。
  如果无法用一条 SQL 语句完成,就通过 PL/SQL 实现(不过,尽可能少用 PL/SQL!)。
  如果在 PL/SQL 中也无法做到(因为它缺少一些特性,如列出目录中的文件),可以试试使用
Java 存储过程来实现。不过,有了 Oracle9i 及以上版本后,如今需要这样做的可能性极小。
  如果用 Java 还办不到,那就在 C 外部过程中实现。如果速度要求很高,或者要使用采用 C
编写的一个第三方 API,就常常使用这种做法。
  如果在 C 外部例程中还无法实现,你就该好好想想有没有必要做这个工作了。
0 请登录后投票
   发表时间:2009-08-24  
lovejuan1314 写道
Oracle expert tom kyte 的开发经验

对于开发数据库软件,我有一套很简单的哲学,这是我多年以来一直信守的思想:
  如果可能,尽量利用一条 SQL 语句完成工作。
  如果无法用一条 SQL 语句完成,就通过 PL/SQL 实现(不过,尽可能少用 PL/SQL!)。
  如果在 PL/SQL 中也无法做到(因为它缺少一些特性,如列出目录中的文件),可以试试使用
Java 存储过程来实现。不过,有了 Oracle9i 及以上版本后,如今需要这样做的可能性极小。
  如果用 Java 还办不到,那就在 C 外部过程中实现。如果速度要求很高,或者要使用采用 C
编写的一个第三方 API,就常常使用这种做法。
  如果在 C 外部例程中还无法实现,你就该好好想想有没有必要做这个工作了。



呵呵 Tom <Oralce 高级编程> ,其观点就是,花在数据库上的每一分钱都应该得到回报,有一项功能不用,就是浪费。
0 请登录后投票
论坛首页 Java企业应用版

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