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 1
查数据大的时候 不要用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了。 结贴! |