`
robbin
  • 浏览: 4821644 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
377a9ecd-1ea1-34ac-9530-9daa53bb2a7b
robbin谈管理
浏览量:137078
社区版块
存档分类
最新评论

绝对不虚此行的活动 - 记Gavin King上海交流研讨会

阅读更多
本次活动举办的两天前,我突然接到Red Hat通知,Gavin King由于身体不适,在北京演讲状态不佳,将取消上海的演讲,只回答听众的提问。随后将Gavin King自己写的请求取消演讲的Email转发给我看了。我心里这一沉,又是周四下午的活动,Gavin King又取消演讲,这次完蛋了,所以随后的会务筹备工作,我基本上也没有怎么去做,预计能来50个人就不错了。

事实上今天下午最终来的人也不多,以我目测来看,可能也就100人上下。然而令我意外的是,下午1.30 Gavin King到达现场的时候,身体状态显得非常不错,而且要求主动进行演讲,这令我和晓钢赶紧商议更改预定的流程。

以前在TSS的视频里面看过Gavin的演讲,紧张,语速快,表达能力差。但今天现场演讲大家都看到了,演讲能力非常棒!现场反应也够灵敏,估计这哥们也是这两年到处演讲给练出来了,确实让人刮目相看。

Gavin的演讲当中也不忘抨击了两句springframework,当然问题也说到了点子上,spring不使用OpenSessionInView的时候,确实处理lazy集合初始化在session关闭以后的问题很棘手。Gavin说EJB3没有这个问题,这引起我想试试EJB3的兴趣。

随后的提问环节,JavaEye的Allen Young小朋友抛出来一个尖锐的问题,直接问Gavin怎么看RoR的AR的CoC?Gavin同学的反应意料之中也意料之外。说意料之中是Gavin同学强烈的表达对RoR的鄙视,说意料之外是Gavin立刻演示了一下annotation在默认配置情况下简短写法,以证明Hibernate已经CoC了。虽然这个问题值得商榷,但现场Gavin的回答和表现绝对一流,让我这个会议组织者非常满意。

也许是因为Gavin的高水平表现让我原来预期砸锅的会议相当的精彩,导致我在自己的演讲环节有点心不在焉,大失水准。头一次在演讲当中拖了后腿。

晓钢演讲过程中,我抽空让Gavin把书全部签了名。晓钢演讲之后,Gavin的现场抽奖环节也非常棒,看的出来,很多中奖者相当兴奋,得到Gavin亲笔签名的书,还现场在讲台和Gavin搂搂抱抱的合影。最后会议结束后,很多人依然冲上去和Gavin同学搂搂抱抱,亲密无间的合影。

不得不说,不是每个来到中国的外国专家都这么平易近人的,至少多次来中国的Martin Folwer是一个相当严肃的英国人,想和他合影是很困难的,至于搂搂抱抱根本没有可能。我想,也许是因为Gavin本来就很年轻,和我们很多人同龄的缘故吧。当然,以Gavin在社区闻名的火爆脾气,现场如此平易近人,笑容可鞠,令我很感到非常意外。

因为我晚上还要到外地出差,会议结束后就立刻离开了。现在在宾馆写这篇报道。今天拍照的曹晓钢,刘江大概还在陪Gavin吃饭呢吧,你们等他们明天把照片贴出来吧。
分享到:
评论
35 楼 lgx522 2007-04-20  
JSF在大部分规范化的页面中还是比较好用的,太灵活的页面自然就力不从心了,这一点包括ASP.NET也不例外。那种太灵活的页面用请求驱动的框架会好一点,最简单就是直接写JSP。
JSF在IDE不到位的情况下是不能View的。本人经验,先用纯HTML将页面效果做好,再加入tag比较容易。本人编辑JSF向来是用EditPlus那样的文本编辑器,tag写熟了也就习惯了。
34 楼 Readonly 2007-04-20  
downpour 写道
不过也有的时候,这种做法很难施展拳脚。比如说,有很多典型的业务系统,它不允许有物理删除这个概念,必须打上disabled标志表示删除。那么这个时候,这个双向的关联就显得很苍白无力,我在这种情况下,除了使用robbin的这个思路,还没有想到有什么很好的解决方法。


这个简单,保持Parent remove方法签名不变:
remove(Child child){
  child.setDisabled(true);
  children.remove(child);
}


mapping文件上加上where
<bag name="children" lazy="true" inverse="true" cascade="all-delete-orphan" where="disabled = false">
    <key column="parent_id"/>
    <one-to-many class="Parent"/>
</bag>


另外,前面Arthas.Hui讲的方法也是很好的,只是光一个disabled属性还不值得偶们这样做,常见的业务系统里面往往还需要记录2者关系的开始时间,结束时间,状态等等,这个时候多一个RelationShip entity才有点意义。
33 楼 yueguangyuan 2007-04-20  
昨天参加活动的确不虚此行,GavinKing的发言还是需要具备一定的听力水平才能听懂,我只能听懂一部分:(,而且感觉是绝大部分是他在做广告:P,比如他一直在讲Hibernate是多么的标准,Hibernate里面的子项目以及JBOSS Seam的好处,顺便说说Spring和ROR的坏话。总得来讲GavinKing所构想的未来就是在指定标准,而所有使用他推崇这一套东西的理由就是标准,甚至包括JBOSS Seam他都打算整成标准,还举例Hibernate在EJB2的时候也不是标准……会不会在几年以后JEE的标准会变成JSF+EJBX+JBOSS Seam?感觉是一个超重量级的东西,至于这套构想能否重现Hibernate的成功就要看GavinKing的造化了。<br/>
本来我昨天是坚持录了一段视频的,结果录了30多分钟的时候突然手机没电了,全部都白录 <img src='/javascripts/fckeditor/editor/images/smiley/msn/cry_smile.gif' alt=''/> 要不还可以拿出来分享一下给没有听到的人……  不过GavinKing的狂多的兔子手势和那诡异的表情还是和搞笑的。<br/>
<br/>
而讲座中最有价值的部分就属Robbin的性能优化了,的确是有指点迷津的作用,就是讲的太快了点……最后Robbin关机的时候发现他的电脑关机的提示是Hibernate...而不是系统正在关机,足见他和Hibernate的感情 <img src='/javascripts/fckeditor/editor/images/smiley/msn/teeth_smile.gif' alt=''/><br/>
<br/>
最后曹晓钢的JBoss Seam的介绍没有上次活动他的那个开源报表吸引人,毕竟Seam在国内还不火热,但是感觉曹晓刚比年前帅多了。
32 楼 mingisme 2007-04-20  
不知道为啥Gavin King会热衷于JSF这种基于事件驱动的Web层框架,实在是不能理解。

最近在用JSF+Spring webflow做项目,那叫一个痛苦。不仅说它的编程模型特别诡异,让我们这种熟悉了传统MVC概念的程序员无法接受,最要命的是它特别喜欢用Tag,做出来的页面是不能View的,这是最最无法交流的地方了。按照robbin的说法,直接对这个东西判了死刑。[/]
对JSFtag支持最好的工具是 BEA Workshop,与你类似,我们用JSF+Spring+Hibernate做了2个项目,JSF简直太猥琐了,遇到的问题还是都解决了,但是不漂亮。这个事件驱动模型,缺少纯URL的action,感觉很不爽。所以,后续项目我已经和其他同事达成共识,要么用Struts1.2,要么用Struts2.
31 楼 zhaonjtu 2007-04-20  
我也是这么做的。
Readonly 写道
Robbin 写道

双向关联,inverse=“true”的情况下应避免使用集合缓存

这个是因为你的这个实践建议造成的:
Robbin 写道

在分层结构中通过DAO接口用session直接持久化对象,避免通过关联关系进行可达性持久化

这样就会带来内存模型和数据库模型不一致的情况

偶的实践建议是相反的:通过关联关系进行可达性持久化

在Parent上有这种方法:
add(Child child) {
  child.setParent(this);
  children.add(child);
}

remove(Child child) {
    child.setParent(null);
    children.remove(child);
}


设置inverse = true 和 cascade = all-delete-orphan
删除某个child的操作就变成一句话搞定:
parent.remove(child)


这样内存和数据库保持完美一致,而且代码写起来也简单,不需要ChildDAO上有啥create/delete/update/ Child的方法

双向关联的2级缓存也是非常好用的
30 楼 wujunrat 2007-04-20  
大师很幽默啊,想不到friends中Ross的经典“兔子手势”,Gavin用的如此地道。向Robbin说声不好意思,你和Gavin合影时忘记走开了,^_^~
29 楼 Arthas.Hui 2007-04-20  
downpour 写道


不过也有的时候,这种做法很难施展拳脚。比如说,有很多典型的业务系统,它不允许有物理删除这个概念,必须打上disabled标志表示删除。那么这个时候,这个双向的关联就显得很苍白无力,我在这种情况下,除了使用robbin的这个思路,还没有想到有什么很好的解决方法。


我认为,这种情况,并不适合做简单的父子关系,即子表有父表ID做外键,因为就业务逻辑而言,“删除”并不是父亲杀死儿子,而是父亲暂时不认这个儿子。我倾向于做3张表,父亲们,儿子们,父亲儿子关系表。父亲表和父亲儿子关系表应该会适合Robbin的思路。
28 楼 Arthas.Hui 2007-04-20  
去听了一下,收获还是很多的。最可惜的是,没有中奖啊。。。
27 楼 newman 2007-04-20  
Gavin King昨天似乎不在状态,如果没有轻微脑震荡可能气氛更热烈,另外在场的部分人英文能力可能都不怎么样(包括我在内),互动性差是这类技术讲座的通病,尤其是老外的场次,否则Gavin老兄会有更多激情来秀出风采。
26 楼 newman 2007-04-20  
事件驱动是进步还是倒退?我认为还是进步的,起码在编程思想和模型是进步的。web开发的复杂度有request-response模型过于简单的原因在其中,为了实现丰富的业务必须从简单处构建,做了不少工作。jboss seam的着力点在于企业开发,所以在栈中加入了与jboss诸多组件的粘合元素,当然其中有商业元素,但选择权在你手中,如果商业开发采用seam方案,我认为整体优势还是非常不错。jsf行还是不行,先别忙下结论,有时候说话太多会忘记做事,行与不行不是说出来的。呵呵。
25 楼 过河卒 2007-04-20  
什么时候能够放出Gavin King演讲的音频来听听,当然Robbin的也是很欢迎的。到的只有100来人,不代表想去的就那100来人啊!照顾照顾我们这些没去的吧。
24 楼 eyejava 2007-04-20  
nihongye 写道
引用
eager-fetch 我这边根本实现不了,在many-to-one端 配不配fetch="join"

视情况而定啦。建议开新贴讨论这个问题。我理解的eager-fetch保证的是not lazy(这一定必须保证).而join是一种期望的抓取策略,并不一定能保证。

开帖了:http://www.iteye.com/topic/72783
23 楼 downpour 2007-04-20  
不知道为啥Gavin King会热衷于JSF这种基于事件驱动的Web层框架,实在是不能理解。

最近在用JSF+Spring webflow做项目,那叫一个痛苦。不仅说它的编程模型特别诡异,让我们这种熟悉了传统MVC概念的程序员无法接受,最要命的是它特别喜欢用Tag,做出来的页面是不能View的,这是最最无法交流的地方了。按照robbin的说法,直接对这个东西判了死刑。
22 楼 downpour 2007-04-20  
Readonly 写道
Robbin 写道

双向关联,inverse=“true”的情况下应避免使用集合缓存

这个是因为你的这个实践建议造成的:
Robbin 写道

在分层结构中通过DAO接口用session直接持久化对象,避免通过关联关系进行可达性持久化

这样就会带来内存模型和数据库模型不一致的情况

偶的实践建议是相反的:通过关联关系进行可达性持久化

在Parent上有这种方法:
add(Child child) {
  child.setParent(this);
  children.add(child);
}

remove(Child child) {
    child.setParent(null);
    children.remove(child);
}


设置inverse = true 和 cascade = all-delete-orphan
删除某个child的操作就变成一句话搞定:
parent.remove(child)


这样内存和数据库保持完美一致,而且代码写起来也简单,不需要ChildDAO上有啥create/delete/update/ Child的方法

双向关联的2级缓存也是非常好用的


这个问题要讨论下去是没有底的。

Readonly的做法是我采用的做法,这在多数情况下都不会存在问题。有的人会担心所谓的效率问题,老实说,除非Children这边成千上万,否则根本不会造成什么效率问题。

不过也有的时候,这种做法很难施展拳脚。比如说,有很多典型的业务系统,它不允许有物理删除这个概念,必须打上disabled标志表示删除。那么这个时候,这个双向的关联就显得很苍白无力,我在这种情况下,除了使用robbin的这个思路,还没有想到有什么很好的解决方法。
21 楼 laoer 2007-04-20  
Gavin King的演讲真的没有听得太懂,我英文太差:(,不过Gavin King对于ROR的反映之激烈,挺有意思的。
Robbin对Hibernate的总结,大部分比较认同,不过对于数据库的粒度设计,我觉得倒不是绝对的,Hibernate在处理复杂业务的数据结构上还是有些力不从心,具体情况具体对待吧,这和世界上没有万能药水。
对于晓刚的Seam介绍,比较简单,Seam到底怎么样,还需要实践来检验啊。
20 楼 mingisme 2007-04-20  
robbin讲得非常不错,解决了我以前得不少疑问。
非常幸运,拿同事的名片该了一下名,抽奖到一本书。
19 楼 shaucle 2007-04-20  
庄表伟 写道
我在和dlee聊这个Seam框架,我们都相信,这种把所有的状态都放在服务器端的框架,简直就是在开“技术倒车”。

在REST+Ajax这样明显的发展趋势的大背景下,我认为,Seam不会有什么前途。


正是这样,jboss web server才好卖嘛.
而且gavin坚信session复制的效果很好

感觉晓钢的seam讲得太少,也较浅,不过可能因为用的人太少了吧.
俺有个项目正在用seam. 1.1的bug还不少...
18 楼 Readonly 2007-04-20  
Robbin 写道

双向关联,inverse=“true”的情况下应避免使用集合缓存

这个是因为你的这个实践建议造成的:
Robbin 写道

在分层结构中通过DAO接口用session直接持久化对象,避免通过关联关系进行可达性持久化

这样就会带来内存模型和数据库模型不一致的情况

偶的实践建议是相反的:通过关联关系进行可达性持久化

在Parent上有这种方法:
add(Child child) {
  child.setParent(this);
  children.add(child);
}

remove(Child child) {
    child.setParent(null);
    children.remove(child);
}


设置inverse = true 和 cascade = all-delete-orphan
删除某个child的操作就变成一句话搞定:
parent.remove(child)


这样内存和数据库保持完美一致,而且代码写起来也简单,不需要ChildDAO上有啥create/delete/update/ Child的方法

双向关联的2级缓存也是非常好用的
17 楼 lgn21st 2007-04-20  
现场感觉真的太棒了,难以想像J2EE社区教父level的人物这么和蔼。<br/>
<br/>
不过~~ 我比较郁闷的是,居然跟另外一位同学重名了~~<img src='/javascripts/fckeditor/editor/images/smiley/msn/omg_smile.gif' alt=''/><br/>
谁让我自己没有名片,去的时候满世界找,最后拿了同学的名片就去了<br/>
跟Gavin King亲笔签名的书失之交臂啊~~<img src='/javascripts/fckeditor/editor/images/smiley/msn/cry_smile.gif' alt=''/><br/>
赶紧china-pub订购
16 楼 nihongye 2007-04-20  
庄表伟 写道
我在和dlee聊这个Seam框架,我们都相信,这种把所有的状态都放在服务器端的框架,简直就是在开“技术倒车”。

在REST+Ajax这样明显的发展趋势的大背景下,我认为,Seam不会有什么前途。

http://docs.jboss.com/seam/1.0.0.GA/reference/en/html/tutorial.html#blog

A RESTful Seam application: the Blog example

相关推荐

    吉他谱_Shark Dad - Dance Gavin Dance.pdf

    初级入门吉他谱 guitar tab

    lambda-calculus-translation-gavin-1:GitHub Classroom创建的lambda-calculus-translation-gavin-1

    lambda微积分翻译加文1 我使用了来自类的代码作为我的基本代码。 我将原始的“ translate-arithmetic”函数修改为一个通用的“ translate-lc”,它将从lambda演算语法转换为Python。 我没有更改LC语法,而是尝试满足...

    gavin-build:简易的打包工具

    gavin-build 项目介绍 gavin-build 是一个自己实现的简易打包工具,内部的实现很简单。仅供学习和参看 主要通过acorn实现对js文件的分析,通过css-tree对css文件进行分析,都是将资源转成对应的ast,然后更编译的...

    game-in1-gavin

    加文·默坎(Gavin Mercan) 迈恩计划 依据:uitleg,spelen,afgaan EN punten FASE 1 maak index.html,style.css和script.js遇到画布 teken slang van 1区段 beweeg俚语oneindig在EEN richting。 beweging...

    gavin-framework:Gavin的轻量级MVC框架

    加文框架(Gavin Framework)是一个专为Java开发者设计的轻量级MVC(Model-View-Controller)框架。在Web应用开发中,MVC模式是一种广泛应用的设计模式,它将业务逻辑、数据处理和用户界面分离开来,使得代码结构...

    Elastic在电子银行的安全应用-Gavin Lee

    20161210Elastic{ON} Dev China 2016

    hire-gavin-asay

    Create React App入门 该项目是通过引导的。 可用脚本 在项目目录中,可以运行: npm start 在开发模式下运行应用程序。 打开在浏览器中查看它。 如果您进行编辑,则页面将重新加载。 您还将在控制台中看到任何...

    Java高手谈论Hibernate的发展之路

    由Gavin King创建并发展的Hibernate,在短短几年间从一个不起眼的开源项目成长为备受瞩目的主流框架,对整个Java持久层技术产生了深远影响。Gavin King在EJB3.0规范制定中的角色尤其关键,他的工作直接影响了Entity ...

    EESB研究生在UCSB举行的关于广义,线性,加法和混合模型的统计研讨会(2020)-Linux开发

    线性,加法和混合模型模型统计研讨会(2020年夏季)线性模型(LM)Raine Detmer,Ruby Harris-Gavin和Devin Gamble广义线性模型(GLM)Ana Miller-Ter Kuile和Tatum Katz通过AIC选择模型An Bui和AnaSofíaGuerra广义...

    Hibernate简介与快速入门

    随着Hibernate的不断发展和完善,Gavin King也成为了EJB 3.0规范的专家委员会成员之一,并成为了JBoss的核心成员之一。 - **开源与普及**: Hibernate是一个开源项目,其设计理念是低侵入式的,这意味着开发者可以...

    java8大知名人物.pdf

    相关链接Gavin King WikiHibernate 官方网站News Article: Hibernate's Gavin King: JBoss acquisition will help grow ORM frameworkGavin King 的著作:Hibernate in Action3. Spring Framework 创始人Rod Johnson...

    PPAP生产件批准程序gavin999.pptx

    PPAP过程详细规定了供应商在开始批量生产前需要完成的一系列文档和验证活动,以确保产品在实际生产环境中能够满足顾客的需求。 在PPAP过程中,供应商需要理解以下几个关键知识点: 1. **目的**: - 确保供应商...

    JAVA persistence with hibernate

    hibernate bible by Gavin king Nothing more

    Gavin-Mulderig.github.io

    标题 "Gavin-Mulderig.github.io" 暗示这是一个个人或项目在GitHub Pages上建立的静态网站。GitHub Pages是GitHub提供的一项服务,允许用户免费托管静态网页,通常用于展示个人简历、项目介绍或者博客等内容。这个...

    gavin2love#handbook#Juniper-初始化设置1

    初始化根密码set system root-authentication plain-text-password #配置 root 登录密码(如不配置,将无法执

    继续公开的秘密(Gavin F. Redelman)Resume Secrets Exposed (Gavin F. Redelman)

    《公开的秘密(Gavin F. Redelman):揭秘简历(Resume Secrets Exposed)》是Gavin F. Redelman撰写的一本关于简历写作的电子书籍。本书的主旨是指导读者如何撰写一份能够脱颖而出的简历,以及如何避免那些常犯的、...

    是时候找到新工作了(Gavin F. Redelman)Time To Find A New Job (Gavin F. Redelman)

    在标题《是时候找到新工作了(Gavin F. Redelman)Time To Find A New Job (Gavin F. Redelman)》中提到的Gavin F. Redelman是本书的作者,他可能是一名职业顾问或有丰富经验的职场专家,RedStarResume可能是一个与...

    gavin-song.github.io:我的网站,用于各种项目

    【标题】"gavin-song.github.io:我的网站,用于各种项目"揭示了这是一个个人网站,由用户Gavin Song创建,旨在展示和管理他的各种项目。这个网站可能包含了Gavin Song的编程作品、技术博客、开源项目等,反映出他在...

    信息交流平台 多多益善

    Hibernate是一个由Gavin King开发的开源框架,其始于2001年,历经多个版本的迭代,逐渐成为JDBC的轻量级对象封装,尤其在Java应用中用于数据库访问。Hibernate 2.0在2003年发布,并在同年获得了JOLT 2004大奖,随后...

    Apress - Pro Hibernate3

    - **起源与发展**:Hibernate最初由Gavin King创建,后来成为JBOSS的一部分,并最终被Red Hat收购。随着版本的发展,Hibernate已经成为Java世界中最流行的ORM框架之一。 - **特点**: - **轻量级**:不需要任何...

Global site tag (gtag.js) - Google Analytics