c********1 发帖数: 421 | 1 比如各种xDBC, ORM, JPA之类
还有小型开发用到的embedded数据库,比如H2 |
c********1 发帖数: 421 | 2 mybatis, hibernate. whatever |
d****i 发帖数: 4809 | 3 你不是已经上了LAMP了吗?PHP连DB比Java容易方便快捷很多。
【在 c********1 的大作中提到】 : 比如各种xDBC, ORM, JPA之类 : 还有小型开发用到的embedded数据库,比如H2
|
c********1 发帖数: 421 | 4 我想学学东西,
而且我的老本行是JAVA
再说DB这一块,早晚要学,趁现在郝蛋老师和赵册老师和其它的大牛都有闲
不如让他们上上公开课,有何不可?
【在 d****i 的大作中提到】 : 你不是已经上了LAMP了吗?PHP连DB比Java容易方便快捷很多。
|
w**z 发帖数: 8232 | 5 直接JDBC 硬搞。最多上个connection pool
【在 c********1 的大作中提到】 : 我想学学东西, : 而且我的老本行是JAVA : 再说DB这一块,早晚要学,趁现在郝蛋老师和赵册老师和其它的大牛都有闲 : 不如让他们上上公开课,有何不可?
|
c********1 发帖数: 421 | 6 大多数项目,还是ORM快
【在 w**z 的大作中提到】 : 直接JDBC 硬搞。最多上个connection pool
|
p*****g 发帖数: 7 | 7 Spring JdbcTemplate is good enough. Do not touch Hibernate :) It is evil. |
g*****g 发帖数: 34805 | 8 Spring jdbc and spring data. |
z****e 发帖数: 54598 | 9 感觉java所有的东西都不要太关注细节,以掌握idea为主
idea对,剩下的你只要投入时间,慢慢google,慢慢试
都能搞定,这就是java的好,一个东西的经验往往可以直接挪用到其他东西上去
因为idea一样,标准一样,剩下的都是私货了,别太关心私货
都是导致vendor lockin的东西
db的话
jdbc->connection pool->orm/推荐hibernate->jpa
jpa就是j2ee的一部分,hibernate就是jpa的impl之一
jpa就是hibernate那个gavin king带头搞的标准
颠覆了entity bean
gavin king是monash大学读数学本科毕业的
澳洲人比较蠢,所以不会造太复杂的东西,思路都是线性简化的
所以spring什么都是愚蠢的aussi搞出来的东西,相对容易掌握
搞ejb那拨人智商很高,很多都是一流发达国家一流大学毕业的
比如巴黎高师,斯坦福这种,搞jboss那个就是巴黎高师的校友
所有的db都提供jdbc驱动,不管用哪个db,都能用jdbc连
但是连了之后,执行的sql不同的db不一样
当年gavin king因为在不同的db之间对付不同db上的不同sql搞疯了
于是写了一个hibernate出来,一下子大受欢迎
因为程序员们象当年讨厌不同的os一样讨厌不同的db
分布式就这毛病,平台碎片化,经常花很长时间在不同的平台上折腾
所以java有多东西都在封装不同的it产品
hibernate尽可能多地封装了不同db上sql的差异
统一接口,然后再在hibernate的原型之上,定义了jpa
统一了app server也就是j2ee的接口
所以你搞懂了hibernate,基本上就都打通了
jdbc->连接池->hibernate,搞懂这三个,可以了,前两个很容易
第三个稍微麻烦点,但是做几个例子,也都那么一回事
spring data没用过,不知道
ibatis也就是mybatis的邪恶前世,我觉得不好,还要手写sql,烦
sql真应该早点淘汰掉,尤其是store procedure,噩梦
现在之所以还有公司被oracle插管吸血,就是sp太多 |
z****e 发帖数: 54598 | 10 行业trend是cassandra
现在把hibernate放简历上
加分有限,cassandra比较热
至少nosql这个热点就算过了巅峰
也还没过去太久 |
|
|
o***g 发帖数: 2784 | 11 repository那套是属于jpa里的?
【在 z****e 的大作中提到】 : 感觉java所有的东西都不要太关注细节,以掌握idea为主 : idea对,剩下的你只要投入时间,慢慢google,慢慢试 : 都能搞定,这就是java的好,一个东西的经验往往可以直接挪用到其他东西上去 : 因为idea一样,标准一样,剩下的都是私货了,别太关心私货 : 都是导致vendor lockin的东西 : db的话 : jdbc->connection pool->orm/推荐hibernate->jpa : jpa就是j2ee的一部分,hibernate就是jpa的impl之一 : jpa就是hibernate那个gavin king带头搞的标准 : 颠覆了entity bean
|
s****y 发帖数: 503 | 12
ibatis的sql是可以自动生成的 我觉得比hibernate灵活一些
【在 z****e 的大作中提到】 : 感觉java所有的东西都不要太关注细节,以掌握idea为主 : idea对,剩下的你只要投入时间,慢慢google,慢慢试 : 都能搞定,这就是java的好,一个东西的经验往往可以直接挪用到其他东西上去 : 因为idea一样,标准一样,剩下的都是私货了,别太关心私货 : 都是导致vendor lockin的东西 : db的话 : jdbc->connection pool->orm/推荐hibernate->jpa : jpa就是j2ee的一部分,hibernate就是jpa的impl之一 : jpa就是hibernate那个gavin king带头搞的标准 : 颠覆了entity bean
|
z****e 发帖数: 54598 | 13 看名字就知道了
jpa == java persistence api
【在 o***g 的大作中提到】 : repository那套是属于jpa里的?
|
c********1 发帖数: 421 | 14 请赵老师再详细解释解释,
比如一个小的操作(routine),
用stored procedure,里面用两个变量
对于逻辑层,只需要call一次SP就行了
但如果把SP去掉,用逻辑层实现的话
虽然架构上更加符合设计原则
但是,性能上就多了一次(或多次)从逻辑层到db的round trip
另外,如果instance/nodes一多,可能还需要考虑并发的同步锁问题
所以SP在性能上还是有优势的,虽然developer们心理这么做不舒服
不知道赵老师在不提倡SP之余,有什么更好的方案?
【在 z****e 的大作中提到】 : 看名字就知道了 : jpa == java persistence api
|
c********1 发帖数: 421 | 15 赵老师说“jdbc->连接池->hibernate”,貌似没有提到spring 的那些东西
你要不和赵老师互相辩论一下:) 不是挑拨,我是想从讨论中学东西
【在 p*****g 的大作中提到】 : Spring JdbcTemplate is good enough. Do not touch Hibernate :) It is evil.
|
c********1 发帖数: 421 | 16 郝老师,你说的和phiking 说的是不是同一个东西?
发信人: phiking (A Programmer), 信区: Programming
标 题: Re: 赵老师,郝老师,你们再讲讲Java->DB这一块吧
发信站: BBS 未名空间站 (Fri Sep 5 00:44:37 2014, 美东)
Spring JdbcTemplate is good enough
【在 g*****g 的大作中提到】 : Spring jdbc and spring data.
|
z****e 发帖数: 54598 | 17 sp高度依赖db,换个db就不能用了,不少db不支持sp
sp当然可以做一些简单的逻辑,要不然就不叫sp了
backend里面这种陷阱很多,一旦陷进去,以后再拔出来时候
就加倍还回去,当你高度依赖一个db的时候,比如oracle
那么oracle哪天突然觉得不爽了,license fee加倍,咋办?
至于并发带来的锁的冲突,这个就是为啥我们需要jta
jta封装了所有的底层逻辑,你只需要拿到context之后
选择ctx.begin,然后ctx.commit就好了,或者高级点@Transaction
剩下的底层逻辑压给框架比如hibernate去做,你就不需要折腾了
如果性能上有问题,那就直接干掉db
用nosql分担大部分persistence的东西
如果实在是db撑不住,那就看看newsql吧
db有75%的时间浪费在一些其实没啥必要的事情上
什么write ahead log之类的,不过newsql还不成熟
【在 c********1 的大作中提到】 : 请赵老师再详细解释解释, : 比如一个小的操作(routine), : 用stored procedure,里面用两个变量 : 对于逻辑层,只需要call一次SP就行了 : 但如果把SP去掉,用逻辑层实现的话 : 虽然架构上更加符合设计原则 : 但是,性能上就多了一次(或多次)从逻辑层到db的round trip : 另外,如果instance/nodes一多,可能还需要考虑并发的同步锁问题 : 所以SP在性能上还是有优势的,虽然developer们心理这么做不舒服 : 不知道赵老师在不提倡SP之余,有什么更好的方案?
|
z****e 发帖数: 54598 | 18 不冲突
spring最重要的是ioc和aop,5分钟就能搞懂ioc
至于spring data,本质上跟hibernate这些是一回事
用法稍微有些不同而已,spring各个components凑一起
可以说是jee的非标准化实现,hibernate更为标准一点
但是spring data也同样遵照了jta,所以在某些方面用起来不会有区别
另外spring也可以很容易地跟hibernate这些框架集成
java就这样,任何一个component都有三个以上的东西在竞争
不象其他语言,一个领域基本上就那么一个东西可以用
当你觉得不爽了,要换framework,连同语言都要换
java至少能保证你不需要换语言,这样可以降低学习成本
尽早脱离语言这个level,去思考一些更为不那么繁琐的事情
【在 c********1 的大作中提到】 : 赵老师说“jdbc->连接池->hibernate”,貌似没有提到spring 的那些东西 : 你要不和赵老师互相辩论一下:) 不是挑拨,我是想从讨论中学东西
|
c********1 发帖数: 421 | 19 感谢赵老师指点
“如果实在是db撑不住,那就看看newsql吧
db有75%的时间浪费在一些其实没啥必要的事情上
什么write ahead log之类的,不过newsql还不成熟”
这里面“如果实在是db撑不住”是什么意思?
另外“DB”又是指什么?我个人觉得(不对请指正),DB包括所有的sql,nosql,newsql
您前面说如果DB的performance不符合需要,可以干掉DB...
newsql本身也是一种DB吧
【在 z****e 的大作中提到】 : sp高度依赖db,换个db就不能用了,不少db不支持sp : sp当然可以做一些简单的逻辑,要不然就不叫sp了 : backend里面这种陷阱很多,一旦陷进去,以后再拔出来时候 : 就加倍还回去,当你高度依赖一个db的时候,比如oracle : 那么oracle哪天突然觉得不爽了,license fee加倍,咋办? : 至于并发带来的锁的冲突,这个就是为啥我们需要jta : jta封装了所有的底层逻辑,你只需要拿到context之后 : 选择ctx.begin,然后ctx.commit就好了,或者高级点@Transaction : 剩下的底层逻辑压给框架比如hibernate去做,你就不需要折腾了 : 如果性能上有问题,那就直接干掉db
|
c********1 发帖数: 421 | 20 赵老师,请问:
您所指的spring data,究竟用这图
左上角那一块 表述更恰当
还是下面这图
中的“Spring ORM + Spring DAO”那一块表述更精确?
【在 z****e 的大作中提到】 : 不冲突 : spring最重要的是ioc和aop,5分钟就能搞懂ioc : 至于spring data,本质上跟hibernate这些是一回事 : 用法稍微有些不同而已,spring各个components凑一起 : 可以说是jee的非标准化实现,hibernate更为标准一点 : 但是spring data也同样遵照了jta,所以在某些方面用起来不会有区别 : 另外spring也可以很容易地跟hibernate这些框架集成 : java就这样,任何一个component都有三个以上的东西在竞争 : 不象其他语言,一个领域基本上就那么一个东西可以用 : 当你觉得不爽了,要换framework,连同语言都要换
|
|
|
z****e 发帖数: 54598 | 21 名字不重要,spring data就是那么个意思
把握idea,你看这图里面几个模块
都给你切割得很清楚了
orm就是类似hibernate一样的东西
jdbc就是底层sql接口
transaction就是jta,spring现在也越来越大
关键是现在spring文档也越来越糟糕,vmware故意把文档写糟糕来
好让客户去买他们的service,我觉得你就搞懂spring ioc部分
其他可用可不用,orm什么你用hibernate是一样的
一些细节语法上的出入而已,idea是共通的
【在 c********1 的大作中提到】 : 赵老师,请问: : 您所指的spring data,究竟用这图 : 左上角那一块 表述更恰当 : 还是下面这图 : 中的“Spring ORM + Spring DAO”那一块表述更精确?
|
z****e 发帖数: 54598 | 22 这个图表述得也不清不楚
有些名称用j2ee标准化得名称
比如jms
有些又用了idea的名字
比如orm,用标准化名称应该是jpa
有些又用了关键字
比如transaction,用标准化名称应该是jta
所以说,backend就这样,各种乱七八糟得概念凑一起
很容易乱,所以最重要还是把握思想,不要被这些东西所迷惑
【在 c********1 的大作中提到】 : 赵老师,请问: : 您所指的spring data,究竟用这图 : 左上角那一块 表述更恰当 : 还是下面这图 : 中的“Spring ORM + Spring DAO”那一块表述更精确?
|
z****e 发帖数: 54598 | 23 另外dao这个其实是一个pattern name
你还是自己动手实现一个就明白了
dao+dto差不多就是orm,官方接口总称叫做jpa |