论坛首页 编程语言技术论坛

为什么没有java on rails——代码量少才是王道

浏览 23098 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2009-06-18  
火星叔叔马丁 写道
night_stalker 写道
不是流氓 写道

我没维护过rails项目!但是rails的代码要比Java的难读,而且难跟。


其实批评者基本都不懂,纯粹来凑热闹。


嗯 我发现这贴欢乐了 一句话 认真你就输了
我还真输了

我很想请教下前辈,rails有没有所谓的逻辑层,传说中的业务逻辑写在哪里?controller还是model?
这个没其他意思,因为我是真的遇到这个问题了!
0 请登录后投票
   发表时间:2009-06-18  
ray_linn 写道
night_stalker 写道
现在比较强大的第三方 ORM 有 Sequel,DataMapper …… 还有各种改造版本的 ActiveRecord。

不过 ActiveRecord 历史悠久,名声卓著,很少人用别的 ORM —— 但不说明其它 ORM 比 ActiveRecord 差,相反 ActiveRecord 的很多做法都算比较土的了 ……

专门用途的譬如连接 Kyoto Cabinet 或者 Couch 或者 DataStore 的小小 ORM 更多了。



俺想问的在rails里把activerecord改成别的orm是否是很easy捏?当然不是那些脱胎自activerecord的进化版


在rails里把AR换成DM的步骤:
1. 修改environment.rb
# 取消对AR的依赖
config.frameworks -= [:active_record]
# 声明对DM的依赖:
require 'datamapper'
# 加载自己写的model文件,如多个,用Dir.glob循环加载
require 'models/my_model.rb'
...
# 连接数据库
DataMapper.setup(:default, "连接字符串或Hash")


收工。

AR、DM都提供了接近无缝切换数据库的能力,这点跟hibernate差不多。

night_stalker 写道
其实批评者基本都不懂,纯粹来凑热闹。

这种情况持续几年了,这次仍不例外


0 请登录后投票
   发表时间:2009-06-18  
ray_linn 写道

俺想问的在rails里把activerecord改成别的orm是否是很easy捏?当然不是那些脱胎自activerecord的进化版


代码中用到 ActiveRecord 的类,一般都是这样:
class Post < ActiveRecord::Base
  ...
end


换成别的 ORM,就把 < ActiveRecord::Base 去掉,再把载入 ActiveRecord 的 config 选项去掉差不多了 ……
如果是维护代码,某些 CRUD 可能不一样,你可以写个和 AR 相似的 facade module 让它 include,或者就直接往下修改吧。我能想出 n 种方法 …… 甚至 stub 一个 ActiveRecord::Base ……


当然直接弹出个设置窗口让你选择 ORM 框架的方法是没有 ……
0 请登录后投票
   发表时间:2009-06-18   最后修改:2009-06-18
liusong1111 写道

在rails里把AR换成DM的步骤:
1. 修改environment.rb
# 取消对AR的依赖
config.frameworks -= [:active_record]
# 声明对DM的依赖:
require 'datamapper'
# 加载自己写的model文件,如多个,用Dir.glob循环加载
require 'models/my_model.rb'
...
# 连接数据库
DataMapper.setup(:default, "连接字符串或Hash")


收工。

AR、DM都提供了接近无缝切换数据库的能力,这点跟hibernate差不多。



这是因为AR和DM都是rails 3的一部分,如果不是rails的orm呢?

我说的是,java的情况是因为jdo, hibernate,ejb都是独立发展起来的东西,最后不得不用spring来把所有的东西集成起来,这导致最后java web又肥又大。

用rails来批评java web是不厚道的。。。

理论上java web快捷之道是可以借助大量的代码生成来完成的。。。。(不过我一直觉得很搞笑的是,我的应用才5m大,却带了150多m的框架)
0 请登录后投票
   发表时间:2009-06-18   最后修改:2009-06-18
ray_linn 写道

这是因为AR和DM都是rails 3的一部分,如果不是rails的orm呢?

我说的是,java的情况是因为jdo, hibernate,ejb都是独立发展起来的东西,最后不得不用spring来把所有的东西集成起来,这导致最后java web又肥又大。

用rails来批评java web是不厚道的。。。

其他几个回的和我要表达的风马牛不相及


远在rails1.x的时候切换到DM都是这样做的,跟rails3没有半点关系,有一篇07的文章作证:
http://bustoutsolutions.com/blog/2007/09/17/getting-started-with-datamapper-and-rails/
0 请登录后投票
   发表时间:2009-06-18  
不是流氓 写道

我很想请教下前辈,rails有没有所谓的逻辑层,传说中的业务逻辑写在哪里?controller还是model?
这个没其他意思,因为我是真的遇到这个问题了!


一般写在 model,不满意就新建一个非持久的类。再不爽就新建一个目录名叫 logic,在 config 里 rquire 它就行了 ……

当然弹出一个对话框让你选择“逻辑层”的方法也是没有
0 请登录后投票
   发表时间:2009-06-18   最后修改:2009-06-18
night_stalker 写道
ray_linn 写道

俺想问的在rails里把activerecord改成别的orm是否是很easy捏?当然不是那些脱胎自activerecord的进化版


代码中用到 ActiveRecord 的类,一般都是这样:
class Post < ActiveRecord::Base
  ...
end


换成别的 ORM,就把 < ActiveRecord::Base 去掉,再把载入 ActiveRecord 的 config 选项去掉差不多了 ……
如果是维护代码,某些 CRUD 可能不一样,你可以写个和 AR 相似的 facade module 让它 include,或者就直接往下修改吧。我能想出 n 种方法 …… 甚至 stub 一个 ActiveRecord::Base ……


当然直接弹出个设置窗口让你选择 ORM 框架的方法是没有 ……



right,正解。

我想现在即使再出现ruby orm框架,大家也会考虑尽量facade到AR里去,而不是象JDO与Hibernate那样差别巨大。

0 请登录后投票
   发表时间:2009-06-18  
楼主应该再探讨一下为什么java没有sinatra,pony,rest-client
0 请登录后投票
   发表时间:2009-06-18  
ray_linn 写道

我想现在即使再出现ruby orm框架,大家也会考虑尽量facade到AR里去,而不是象JDO与Hibernate那样差别巨大。


你这个需求比较奇怪,既要用新 ORM,又不能改代码 ……

正常来说没人会这么想的,大部分人一开始选好框架就不换了。想中途换 ORM 框架的,目的基本都是想要大量重构让代码变得 pp ……

我觉得新框架出现的原因是:这些人对 AR 的写法存在不满 ……

如果不是为了让代码写起来更 pp,我才不把 AR 换掉呢。
0 请登录后投票
   发表时间:2009-06-18  
night_stalker 写道
ray_linn 写道

我想现在即使再出现ruby orm框架,大家也会考虑尽量facade到AR里去,而不是象JDO与Hibernate那样差别巨大。


你这个需求比较奇怪,既要用新 ORM,又不能改代码 ……

正常来说没人会这么想的,大部分人一开始选好框架就不换了。想中途换 ORM 框架的,目的基本都是想要大量重构让代码变得 pp ……

我觉得新框架出现的原因是:这些人对 AR 的写法存在不满 ……

如果不是为了让代码写起来更 pp,我才不把 AR 换掉呢。



新近的ORM代表有啥。。。。俺一直想C# 4.0之后,很有可能为C#其写一个AR,而不需要nhibernate.
0 请登录后投票
论坛首页 编程语言技术版

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