
1 zava 2014-09-10 21:52:17 +08:00 JPA 不是正道, 围绕着 SQL 转,又没有 SQL 的表现力. |
2 ren2881971 OP @zava 平时都是直接写sql的。 但是公司现在总想着兼容多数据库。 这本身就是矛盾的。 当然也不排除我sql 写够了 想用用hibernate尝尝鲜。。 |
3 rayu 2014-09-10 22:25:56 +08:00 最近刚加入一家新公司,经理居然规定死了只能用spring data jpa,各种难受,借lz帖子吐槽一下。 |
4 ren2881971 OP @rayu 欢迎吐槽~ 话说spring 那个jpa 好用么? 前一阵我们组长搭了一套 spring mvc + spring core + spring jpa + spring security的环境~ 我总感觉有点牵强附会,生用的感觉~ |
5 unionx 2014-09-10 22:32:04 +08:00 hibernate 大法好,自己写 sql 早晚被坑 |
6 reeco 2014-09-10 22:41:04 +08:00 我喜欢直接写SQL |
7 ren2881971 OP @unionx 这个要看 sql掌握的程度和是否需要跨数据库 根据实际应用来度量的。 不是什么大法就用那个的。 再说hibernate目前在哪儿都被黑出了翔吧 |
8 suliuyes 2014-09-11 00:54:25 +08:00 1:绝大多数项目都不需要跨数据库,你真的需要hibernate吗?跨了就没选择了。 2:已经会sql了为什么还需要耗费心思学ORM框架?投资回报性价比高吗?确定不考虑mybatis? |
10 Aegwynn 2014-09-11 08:32:15 +08:00 @AIRPLAY 同一个东西,2010年由apache software foundation 迁移到了google code,并且改名为MyBatis |
11 bigzhu 2014-09-11 08:40:25 +08:00 via Android 等被坑过你就知道这些orm有什么不好了。到一定数量级,必须写sql |
12 qq2511296 2014-09-11 08:49:52 +08:00 查数据大的时候 不要用HQL 例如一些报表的查询的时候 尽量都用原生sql查询 效率会提高很多 |
13 hcymk2 2014-09-11 09:18:17 +08:00 把一个不太了解的工具当作银弹,万灵药,不坑你才怪。 |
14 zouxcs 2014-09-11 09:23:20 +08:00 习惯了自己写sql,经常用mybatis,配置简单。 |
15 tflz514 2014-09-11 09:25:21 +08:00 |
16 ffffwh 2014-09-11 09:39:16 +08:00 据说ORM被吐槽很多?谁顺手贴几篇文章给看看? |
17 kengle 2014-09-11 09:49:18 +08:00 那么多人唱衰 orm 啊, orm 这东西是个好黑的箱子, 里面一堆的代码注入, 而且 bean 的管理好复杂, 特别是 hibernate, 一不小心就踩到坑. 不过话说回来, 小项目用 orm 效果还是很好的, 等项目变大了再纯 sql 也不迟啊. |
18 gouflv 2014-09-11 09:56:21 +08:00 学习归学习, 真的试试就知道了 |
19 hcymk2 2014-09-11 10:08:56 +08:00 这是一篇很老的帖子 http://www.iteye.com/topic/148055 |
20 ren2881971 OP |
21 ren2881971 OP @ffffwh 只是听说~ 还没踩过坑。 本着no zuo bie 的 心里居然尝试下~ |
22 gaicitadie 2014-09-11 10:43:15 +08:00 可能java语言本身繁琐不适合orm吧,歪个楼说说python和ruby框架中的orm,django和rails使用orm都很爽啊,写orm也会思考它生成的sql,但orm写起来要简洁清晰的多。 |
23 ren2881971 OP |
24 unionx 2014-09-11 11:07:03 +08:00 @ren2881971 是有些黑点,但是还是有不少人最后老老实实去用了 |
25 gaicitadie 2014-09-11 11:14:04 +08:00 @ren2881971 太过复杂关系的查询没做过,对many to one,many to many这些,django的orm用起来很方便,只需要select_related方法,就可以多表关联查询 |
26 windyboy 2014-09-11 11:23:29 +08:00 和楼主相反 玩了多年的对象操作以后 我觉得还是写sql舒心 |
27 ioth 2014-09-11 11:41:19 +08:00 第二个境界,过了三个再谈感觉。 |
28 qping 2014-09-11 12:23:50 +08:00 via iPhone 最早用jdbc,觉得hibernate好厉害,不用写sql,不用自己装配对象。后来用公司的框架,更牛逼,后台不用写,写写js就好。用多就吐了,还是mybatis好,既有掌握一切的感觉:写sql,又不能做那些苦力活:装配对象。 hibernate实在是对他了解甚少,调用存储过程也是很麻烦,后台自动生成的sql也丑(这是最关键的),还是比较喜欢:越简单效率越高的 |
29 seeker 2014-09-11 12:36:38 +08:00 5年Java表示还没用过hibernate,,,感觉还是手写sql比较有安全感。 |
30 HunterPan 2014-09-11 12:48:17 +08:00 复杂的用sql,简单的hql。很鄙视hibernate,所以不愿意学习 |
31 Narcissu5 2014-09-11 12:52:15 +08:00 很简单,你已经有SQL,为什么还需要HQL,Criteria 同理。 我是很喜欢play2带的anorm,相当赞~ |
32 TimLang 2014-09-11 13:05:01 +08:00 不做java好久,还是推荐ibatis,特别是公司里面有DBA的,保证不坑。 小项目hibernate用用还可以,规模上去了,看起来不方便的sql未必会给你带来麻烦。。 |
33 ren2881971 OP 好吧~ 看来大家还是对 hibernate 很排斥的态度。 其实我只是会用而用~ 以免跳槽 被说连hibernate 都不会用~ |
34 hcymk2 2014-09-11 13:52:52 +08:00 curl "https://api.github.com/repos/mybatis/mybatis-3" | grep count curl "https://api.github.com/repos/hibernate/hibernate-orm" | grep count |
35 loryyang 2014-09-11 14:00:28 +08:00 hibernate这种就是加速开发效率的,我觉得有条件的都可以使用,毕竟效率高。至于后期性能问题什么的,到时候再升级呗。没必要上来就高大上。另外说实话,你也不一定能做出高大上的东西来 |
36 est 2014-09-11 14:11:54 +08:00 sql 本质是什么,sql 本质就是本地代码远程通过RPC执行。orm本质是什么,orm本质是RPC的一种封装。 and all wrappers are leaky. |
37 cougar 2014-09-11 14:12:34 +08:00 各行各业比比皆是 |
38 Lucups 2014-09-11 14:19:34 +08:00 没有好不好,只有合不合适。 |
39 Lucups 2014-09-11 14:20:02 +08:00 小孩才分好坏,大人只看利弊。 |
40 rayu 2014-09-11 14:44:19 +08:00 jpa 学习成本维护高,不熟的还是不建议使用。 |
41 rayu 2014-09-11 14:44:32 +08:00 hibernate也是一个德行 |
42 raychar 2014-09-11 15:01:46 +08:00 只了解到一对多 多对一那些的程度,折腾很久,然后放弃。 |
43 xiaowangge 2014-09-11 17:53:30 +08:00 公司的原则是: 能不用 Hibernate(搭配 MySQL)就尽量不用。项目中几乎看不到 Hibernate 影子。 我们使用腾讯云的 CMem 存储。 |
44 robertlyc 2014-09-11 17:56:42 +08:00 activerecord爆hibernate几十条马路 |
45 ren2881971 OP @robertlyc 你这我是没听过啊~ |
46 ren2881971 OP @qping 有空研究下~ spring mvc+ mybatis |
47 xuan_lengyue 2014-09-11 19:02:15 +08:00 ORM 少碰为妙,最近一个项目用了 Entity Framework,坑实在太多了。 最大的一个问题是有些用 SQL 很轻松就实现的东西在 EF 里面非常难实现或者根本就没法实现。 然后发现大部分数据层逻辑都用 EF 实现了,会有一种骑虎难下的感觉。 |
48 wintersun 2014-09-11 19:26:02 +08:00 @Lucups 同意,没有银弹,只有适合。认清楚各种技术的优缺点,分析要实现的系统场景,裁裁剪剪,剪剪裁裁,终成大家!^_^ |
49 ren2881971 OP @xuan_lengyue orm 坑是一点。 更多情况是使用者没弄明白就开始瞎用了 |
50 ren2881971 OP 第一个坑来了。。。 hibernate的关系映射延迟加载 需要session在对象使用的时候一直开着。也就是一直持有session。 但是spring 的DAO模式 HibernateTemplate 确在每个方法完毕后即关闭session。 这两个结合一起绝壁了。 这到底让不让我使用关系映射延迟加载啊! 这用sql就是 查完父表 再查子表嘛~ |
51 spacewander 2014-09-12 09:51:23 +08:00 @ren2881971 只用过Ruby的ActiveRecord和Python的SQLAlchemy的人表示……你说的东西也太复杂吧,完全听不懂……hibernate真是奇怪的orm。 |
52 ren2881971 OP @spacewander 唉 你们这些互联网程序员! |
53 ren2881971 OP 经过两天使用LZ 以身试法 向大家展示了 no zuo no die why u try 以后再也不用hibernate了。 结贴! |