<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>mayabin</title>
    <description>linux，java，opensource</description>
    <link>http://mayabin.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>现代企业面试经验谈</title>
        <author>mayabin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mayabin.javaeye.com">mayabin</a>&nbsp;
          链接：<a href="http://mayabin.javaeye.com/blog/190224" style="color:red;">http://mayabin.javaeye.com/blog/190224</a>&nbsp;
          发表时间: 2008年05月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          现代企业面试经验谈<br /><br />从毕业到现在已经8年了，经历过被面，也做过面试官。<br />从数次的经历中，想总结点儿东西。<br />当然这只是我的一家之言，如果你有同感，可以读完这篇文章；如果你感觉我讲的非常幼稚，非常可笑，不妨一笑而过，我不接受讨论或者板砖。<br /><br />首先，要放稳心态。<br />当然，求职者的心态都是非常急迫的。对于刚毕业的学生来说，急于步入社会展现自己，同时又有对未知社会的一种紧张感；对于换工作的经验人士来说，急于找到另一份工作，以维持自己的生计。<br />但是不管你忙于准备简历时有多么着急，不管你在网上或者报纸夹缝中寻找就业机会时有多么着急，到最后面试时，一定不要着急，要沉稳。<br />你要知道求职和招聘是双向的，招聘的公司一样在急切的寻找他们需要的人。<br />大部分公司在选人的时候，最最关注的是什么？你的经验有多丰富，你的技能有多匹配？这些都不是最重要的，最重要的是一个人的基本素质。<br />基本素质包括什么？沟通，合作，积极向上的心态，责任感，与人为善，谦虚，自信等等等等。我相信，一个受过十几年正规教育，甚至有多年工作经验的人来说，这些基本素质都是具备的。我们需要做的就是把你的这些素质和能力稳定地发挥出来。<br />那么急躁或者浮躁，有可能令你的语言或者行为失调，从而影响这最关键的一步。<br /><br />好多人从心里否定现在的招聘模式，面试-笔试，短短的几个回合，就决定了一个人的去留。甚至一个证书，能决定一个人的命运。但是谁能提供一个更好的办法？<br />现代人工作节奏快，压力大，再加上大环境，难免浮躁，做事浮于表面，所以不要怪他们没有深入地了解你。这时候，打的是心理战，他浮躁，你沉稳，你就胜了这一局。有人说，他也沉稳怎么办，那更好了，说明他希望更深入的了解你，你怕什么。<br /><br />沉稳或者说稳定的心态表现在任何方面。比如着装，要装扮得体；走路，要仪态得体；谈话，要吐字清晰，铿锵有力。<br /><br />这些做到了，就可以事半功倍了吗？不一定，继续往下看。<br /><br />其次，要有目标。<br />目标，说大了叫理想，说小了，就是你想做什么样的事情，做到什么程度。<br />尤其是刚毕业的学生，我遇到好多，问他目标是什么，他们回答不上来。当然造成这样的因素有好多。比如学的专业和自己理想不一致，造成目标错乱；或者说专业学的太宽泛，不好定位，比如现在计算机专业学的知识，适合在研究院工作，做基础研究，但是真正到企业应聘，可能做开发，也可能做维护，还可能做技术销售。不管怎么样，如果你毕业前没想过自己的前途，那么在面试前，你可以针对应聘的职位做一个临时性的个人规划。<br />我可以给做计算机行业的学生一些建议，你的发展可以基于以下几个大的路线，一是开发，二是数据库，三是网络，四是系统集成，五是技术销售，六是商务顾问。<br /><br />当然我的建议是针对目前的软件公司，那些研究院，学校，政府机构不适合。再一个，我的建议并没有包括特定的技术在内，比如，开发我并没有提java开发或者c开发，数据库也没有局限在特定的数据库。我个人认为具体的开发语言或者技术，并不适合做分类条件，产品是要一代一代升级的，说白了，它是工具。如果你真正掌握了某个领域的基础知识和方法论后，管他什么开发语言，管他什么数据库，一样的东西。<br /><br />对于有经验的人来说，最好是坚持你先前走过的路。除非太特殊的原因，不建议半路更换。中国有句俗话“男怕入错行”。而且我本人有切身的体会，真的很难。<br />我最初做的是it支持，在物流行业。做的挺杂，网络，服务器维护，桌面支持，应用系统维护，网站开发，企业Mis系统开发，都做过。但是做了几年后，有了职业瓶颈，我所在的地区很少大型的企业，不管是系统管理，还是it支持，我都很难找到一个有很大发展的职位，除非我换个环境，去上海，北京或者改行。<br />我选择了做软件开发，幸好我有开发的一些知识和经验，并且我在商务知识方面有些优势。但是在改行了几年的今天，我问自己，“最擅长的是什么”，“最希望做的是什么”，我心里还会认为是linux系统工程师。或许再过几年，我会改变自己的想法，但是需要时间，而且我也感谢那些给我从头来过机会的公司，老板，同事们。<br /><br />再接下来，我想强调的一点儿是要自信，而且，可以稍稍带那么些自满。为什么这么说？软件，互联网都是新兴的行业，发展时间不久，对这个行业本身来说，就有浮躁的成分在里面，虽然说，经历过几次泡沫，但是我认为还不够，这个行业还需要锤炼，才能真正和传统行业相融合。<br />再谈一下从事这个行业的人，大部分都是二三十岁的年青人，很年轻，也很浮躁。可能有人不同意我的观点，会拿马云，张朝阳，陈天桥这样的富翁来反驳我。不可否认，他们通过努力，积聚了大笔财富，而且我佩服他们身上的那股聪明，勇敢的劲头，但是你去问问他们，他们是不是也在天天学习。你再问问他们，如果换一个国家，换一个行业，他们会如此轻松的成功吗？<br />钱并不能真正代表一个人有多富有。<br />那么你在面试中遇到的面试官，就有可能是在这样的大浪中淘金，期望有所收获的一分子。在同他们的谈话中，你应该表现出你的自信，你的果敢，你的创新以及勇敢。<br />我说这些话并不是贬义。因为这个行业，新技术层出不穷，创新才是唯一的出路。不进步就等于退步，你必须要有符合这个行业的性格特性，才能证明你是一个合格的it人。<br />而且我本人在这方面吃了大亏。我出生在一个教师家庭，我母亲小的时候上私塾，后来教书，潜移默化我们姐弟受的是中国儒家的思想教育。比如，年长的人是权威；对人要客气，即使他有不对的地方；为人要谦虚，含蓄不外露。<br />那么这些传统在现代企业里是不适合的，特别是在外企。现在的办公室里，不管是工作还是开会，有问题就要针锋相对，对事不对人，管他年长还是年轻；有本事就要显露出来，不会有人来问你的，大家都巴不得自己表现呢。<br />所以，一定要表现出自己的自信，勇敢的展示自己，甚至可以自满一些，争取没做过的事情，也是一种锻炼与成长。那么这样做也是对自己的一种创新。这些都是符合这个行业特点的。<br /><br />希望以上说的这些，对大家有用。也希望大家少一些抱怨，多一份思考，思考怎么去适应自己生活和工作的这个环境。<br /><br />下面是我面试时时常犯的一些错误，总结出来，给大家提个醒：<br />1. 忘记面试官姓名。我几乎记不住给我面试的人叫啥，有时候想给人家打回去，问些问题，不知道找谁。<br />2. 结尾忘记总结。其实我也不是没总结，但总是总结不流利。总结主要表达感谢，确认面试表现，希望能有下一次面试机会或者得到这个职位的愿望三个目的。<br />3. 面试中不能灵活应对。有时候面试完后，我就想，有个问题这么回答会更好。解决这个问题的方法，就是准备充分。<br /><br />最后的一句总结，现在的伯乐比千里马更难找，还是自己多跑两步吧。<br /><br />转载请注明出处：javaeye
          <br/>
          <span style="color:red;">
            <a href="http://mayabin.javaeye.com/blog/190224#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 06 May 2008 15:02:45 +0800</pubDate>
        <link>http://mayabin.javaeye.com/blog/190224</link>
        <guid>http://mayabin.javaeye.com/blog/190224</guid>
      </item>
      <item>
        <title>基于服务器端技术和基于客户端技术的一点看法</title>
        <author>mayabin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mayabin.javaeye.com">mayabin</a>&nbsp;
          链接：<a href="http://mayabin.javaeye.com/blog/161807" style="color:red;">http://mayabin.javaeye.com/blog/161807</a>&nbsp;
          发表时间: 2008年02月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在论坛上有些基于服务器端技术和基于客户端技术的讨论，主要针对目前项目开发中，大家用到的Web2.0以及JSF技术的讨论。<br /><br />Web2.0和ajax技术让javascript又焕发了青春，extjs，gwt，dojo都提供了丰富的UI组件库。许多项目都用到了他们，我们现在做的项目也不例外。<br /><br />其实我个人并不喜欢这些技术，原因有几个：<br />1. 我做过几年的系统管理员（linux，freebsd），所以我偏爱服务器端技术。我喜欢集中管理的这种方式。虽然现在的PC都具有了很强的性能，Web2.0能分散服务器的部分压力，延缓网络延迟。但是我也相信随着服务器和网络技术的进一步发展，一定会弥补这一方面的不足。相反，客户端平台软硬件平台的异构造成的兼容性问题，会一直存在。<br /><br />2.从客户体验看，虽然都说自己的兼容性很高，但是经过我们的测试，不管是Extjs还是domapi都只能在某个浏览器下表现优秀，切换浏览器后，总有让人不满意的地方。<br /><br />3.从程序开发角度看，javascript的弱类型，灵活的语法，是程序员的噩梦；并且javascript是下载到客户端运行的，它的安全性对网站来说，可以接受，但是对于j2ee的企业应用来说，却是致命的缺点。<br /><br />基于服务器端的技术，JSF让我惊喜过，但是太少的厂商支持和宣传，让它就像一个长不大的孩子。希望金蝶的OperaMasks和jboss的seam能给JSF带来翻身的机会。<br /><br />Sun的javaFx,Adobe的Flex，还有微软的silverlight都在成长和推广阶段。<br /><br />不管最后哪种技术来替代现在的WEB2.0，希望目前这个过渡阶段尽早结束。<br /><br />下面是我们在项目开发过程中总结的Extjs和domapi的区别：<br />1. Extjs的兼容性要好过domapi，特别是在Firefox的表现上。<br />2. Extjs的语法比domapi复杂，domapi是一个轻量级框架。<br />3. Extjs的UI组件多，功能全。<br />4. 都使用了JSON，但是domapi对json的支持要好过Extjs。
          <br/>
          <span style="color:red;">
            <a href="http://mayabin.javaeye.com/blog/161807#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 10 Feb 2008 12:21:32 +0800</pubDate>
        <link>http://mayabin.javaeye.com/blog/161807</link>
        <guid>http://mayabin.javaeye.com/blog/161807</guid>
      </item>
      <item>
        <title>水晶报表的一个Bug--修改Log4j默认输出级别</title>
        <author>mayabin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mayabin.javaeye.com">mayabin</a>&nbsp;
          链接：<a href="http://mayabin.javaeye.com/blog/159288" style="color:red;">http://mayabin.javaeye.com/blog/159288</a>&nbsp;
          发表时间: 2008年01月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近同事遇到一个问题，每当调用水晶报表后，tomcat后台的日志级别就自动变成了Error。<br /><br />帮着他找了一些方法，都不行。<br /><br />后来搜到一篇英文文档，是水晶报表的一个Bug，每次调用open方法后，水晶报表都会把Log4j的默认输出级别变成Error。<br /><br />解决办法：<br />在调用open之前，记录默认输出级别，在调用open之后，把默认输出级别改回去。<br /><br />参考网址：http://support.businessobjects.com/forums/message.asp?fid=582&sk=20&ps=50&pn=1&mid=156125#m156125<br /><br />参考代码：<br /><pre name="code" class="java">
rootLogger=LogManager.getRootLogger()；
Level originalLevel = rootLogger.getLevel();
clientDoc.open(file, 0);
Level modifiedLevel = rootLogger.getLevel();
System.out.println("original level: "+originalLevel);
System.out.println("modified level: "+modifiedLevel);
rootLogger.setLevel(originalLevel);</pre>
          <br/>
          <span style="color:red;">
            <a href="http://mayabin.javaeye.com/blog/159288#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 25 Jan 2008 11:48:46 +0800</pubDate>
        <link>http://mayabin.javaeye.com/blog/159288</link>
        <guid>http://mayabin.javaeye.com/blog/159288</guid>
      </item>
      <item>
        <title>修改数据库的最大连接数</title>
        <author>mayabin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mayabin.javaeye.com">mayabin</a>&nbsp;
          链接：<a href="http://mayabin.javaeye.com/blog/158771" style="color:red;">http://mayabin.javaeye.com/blog/158771</a>&nbsp;
          发表时间: 2008年01月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          数据库默认情况下有一个最大连接数。<br /><br />我查看了一下，mysql和postgresql的默认最大连接数都为100.<br /><br />如何修改这个最大连接数呢？<br /><br />Postgresql：<br />在postgresql.conf配置文件中，修改max_connection的值。<br /><br />Mysql：<br />一种办法是在my.cnf中修改max_connection的值。<br />另一种是修改safe_mysqld文件中的max_connection的值。
          <br/>
          <span style="color:red;">
            <a href="http://mayabin.javaeye.com/blog/158771#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 23 Jan 2008 16:03:47 +0800</pubDate>
        <link>http://mayabin.javaeye.com/blog/158771</link>
        <guid>http://mayabin.javaeye.com/blog/158771</guid>
      </item>
      <item>
        <title>Javahelp使用入门</title>
        <author>mayabin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mayabin.javaeye.com">mayabin</a>&nbsp;
          链接：<a href="http://mayabin.javaeye.com/blog/140827" style="color:red;">http://mayabin.javaeye.com/blog/140827</a>&nbsp;
          发表时间: 2007年11月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Javahelp使用指南，用来制作在线帮助系统。
          <br/>
          <span style="color:red;">
            <a href="http://mayabin.javaeye.com/blog/140827#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 15 Nov 2007 11:48:34 +0800</pubDate>
        <link>http://mayabin.javaeye.com/blog/140827</link>
        <guid>http://mayabin.javaeye.com/blog/140827</guid>
      </item>
      <item>
        <title>Hibernate Search使用入门</title>
        <author>mayabin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mayabin.javaeye.com">mayabin</a>&nbsp;
          链接：<a href="http://mayabin.javaeye.com/blog/136954" style="color:red;">http://mayabin.javaeye.com/blog/136954</a>&nbsp;
          发表时间: 2007年10月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Hibernate Search使用入门
          <br/>
          <span style="color:red;">
            <a href="http://mayabin.javaeye.com/blog/136954#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 31 Oct 2007 11:30:49 +0800</pubDate>
        <link>http://mayabin.javaeye.com/blog/136954</link>
        <guid>http://mayabin.javaeye.com/blog/136954</guid>
      </item>
      <item>
        <title>Selenium使用入门</title>
        <author>mayabin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mayabin.javaeye.com">mayabin</a>&nbsp;
          链接：<a href="http://mayabin.javaeye.com/blog/135085" style="color:red;">http://mayabin.javaeye.com/blog/135085</a>&nbsp;
          发表时间: 2007年10月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          我整理了一些Selenium入门的资料，pdf格式。
          <br/>
          <span style="color:red;">
            <a href="http://mayabin.javaeye.com/blog/135085#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 24 Oct 2007 12:38:59 +0800</pubDate>
        <link>http://mayabin.javaeye.com/blog/135085</link>
        <guid>http://mayabin.javaeye.com/blog/135085</guid>
      </item>
      <item>
        <title>Spring中实现aop的几个不错的例子</title>
        <author>mayabin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mayabin.javaeye.com">mayabin</a>&nbsp;
          链接：<a href="http://mayabin.javaeye.com/blog/127628" style="color:red;">http://mayabin.javaeye.com/blog/127628</a>&nbsp;
          发表时间: 2007年09月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          aop提供了横切的处理流程。<br />
<br />
虽然我本人并不喜欢方面，我认为它破环了正常的程序逻辑，不利于代码维护。<br />
<br />
但是项目中要用，找了几个不错的例子，链接如下：<br />
<br />
1. <a href="http://dev2dev.bea.com.cn/techdoc/20051216709.html"><span class="h1b">Spring Framework中的面向方面编程（AOP），第一部分</span></a><br />
<br />
2. <a href="http://dev2dev.bea.com.cn/techdoc/20051223712.html"><span class="h1b">Spring Framework中的面向方面编程（AOP），第二部分</span></a><br />
<br />
3. <a href="http://starrynight.blogdriver.com/starrynight/155327.html">Spring AOP编程--星月夜</a>
          <br/>
          <span style="color:red;">
            <a href="http://mayabin.javaeye.com/blog/127628#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 27 Sep 2007 15:52:32 +0800</pubDate>
        <link>http://mayabin.javaeye.com/blog/127628</link>
        <guid>http://mayabin.javaeye.com/blog/127628</guid>
      </item>
      <item>
        <title>hibernate中不能用left join on的解决办法</title>
        <author>mayabin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mayabin.javaeye.com">mayabin</a>&nbsp;
          链接：<a href="http://mayabin.javaeye.com/blog/123886" style="color:red;">http://mayabin.javaeye.com/blog/123886</a>&nbsp;
          发表时间: 2007年09月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          &nbsp;hibernate中不能用left join on的解决办法<br />
<br />
<br />
hibernate中多表查询时，有时需要用到left join，但是不能用left join on。<br />
也就是说，on这个条件是需要写到hbm配置文件中去的。<br />
<br />
比如，汽车和车轮这两个对象，我想做下面的查询，，select 汽车 where 车轮=固特异。<br />
<br />
其实这个查询很简单，用left join就能实现。但是需要在汽车的hbm配置文件中关联车轮。<br />
HQL语句像这样，select 汽车 LEFT JOIN 车轮 where 车轮=固特异。<br />
<br />
但是如果你不在汽车的hbm文件中建立和车轮的关联，就需要用其他办法了，left join on=no， 在hql中没有on这个关键字。<br />
<br />
首先说明，这种设计方法并不好，能避免尽量避免。<br />
解决办法有2个。<br />
一个是用普通的多表查询，比如&nbsp; select 汽车 from 汽车，车轮 where 汽车.id=车轮.属主.id and 车轮=固特异。<br />
但是有时候会有重复的记录，需要添加distinct关键字。<br />
另一个是用子查询，比如， select 汽车 from 汽车 where 汽车.id IN (select 车轮.属主.id from 车轮 where 车轮=固特异)。<br />
<br />
<br />
尽量建立关联，直接使用left join是最方便的办法。
          <br/>
          <span style="color:red;">
            <a href="http://mayabin.javaeye.com/blog/123886#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 14 Sep 2007 17:18:15 +0800</pubDate>
        <link>http://mayabin.javaeye.com/blog/123886</link>
        <guid>http://mayabin.javaeye.com/blog/123886</guid>
      </item>
      <item>
        <title>lightbox---在web页面中添加图片浏览功能</title>
        <author>mayabin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mayabin.javaeye.com">mayabin</a>&nbsp;
          链接：<a href="http://mayabin.javaeye.com/blog/120609" style="color:red;">http://mayabin.javaeye.com/blog/120609</a>&nbsp;
          发表时间: 2007年09月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial"><a href="http://www.huddletogether.com/projects/lightbox2">http://www.huddletogether.com/projects/lightbox2</a></font></p>
<p>首先去上面的页面看一下特效，能够在web页面中实现象acdsee那样的图片浏览的功能，给单调的页面增色不少。</p>
<p>到目前为止，能实现这样的特效，也只有javascript才能做的这么好。</p>
<p>lightbox是一个用javascript写的组件，专门在web页面中实现图片的浏览。</p>
<p>要把他加到自己的web应用中，并不是多么复杂的事情，lightbox已经替我们做了大量的工作，只要拿过来用就可以了。</p>
<p>首先，要把lightbox下载，放到自己的web应用中。和其他要引用的js文件，css文件放在一起就可以。</p>
<p>但是要注意，css和js中包含所需image图片的路径，最好检查一下，改成自己的绝对路径。</p>
<p>接下来要做的是要把lightbox引进来，</p>
<p><font face="Arial">&lt;script type=&quot;text/javascript&quot; src=&quot;/common/script/3rdParty/lightbox2/js/prototype.js&quot;&gt;&lt;/script&gt;<br />
&lt;script type=&quot;text/javascript&quot; src=&quot;/common/script/3rdParty/lightbox2/js/scriptaculous.js?load=effects&quot;&gt;&lt;/script&gt;<br />
&lt;script type=&quot;text/javascript&quot; src=&quot;/common/script/3rdParty/lightbox2/js/lightbox.js&quot;&gt;&lt;/script&gt;<br />
&lt;link rel=&quot;stylesheet&quot; href=&quot;/common/script/3rdParty/lightbox2/css/lightbox.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&gt;<br />
</font></p>
<p>再接下来要做的就是给图片链接加一个rel属性，比如：</p>
<p>&lt;a href=&quot;xxx&quot; rel=&quot;lightbox&quot;&gt;xxx&lt;/a&gt;</p>
<p>对了，就是这么简单。</p>
<p>最需要注意的事项，就是lightbox自己图片的路径，以及引用的lightbox的路径，只要路径对，一般不会出现问题。</p>
<p>我在用的时候，遇到一个问题，我的图片不是用静态html代码写的，动态生成，所以lightbox捕捉不到image list。解决办法就是，在动态加载图片后，调用<font face="Arial">Lightbox.prototype.updateImageList()方法，这样就没有问题了。</font></p>
<p><font face="Arial"><a href="http://www.huddletogether.com/projects/lightbox2">http://www.huddletogether.com/projects/lightbox2</a>页面上就有简单的使用帮助。</font></p>
          <br/>
          <span style="color:red;">
            <a href="http://mayabin.javaeye.com/blog/120609#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 05 Sep 2007 13:23:17 +0800</pubDate>
        <link>http://mayabin.javaeye.com/blog/120609</link>
        <guid>http://mayabin.javaeye.com/blog/120609</guid>
      </item>
      <item>
        <title>设计优良的API</title>
        <author>mayabin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mayabin.javaeye.com">mayabin</a>&nbsp;
          链接：<a href="http://mayabin.javaeye.com/blog/120223" style="color:red;">http://mayabin.javaeye.com/blog/120223</a>&nbsp;
          发表时间: 2007年09月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial"><a href="http://www.infoq.com/cn/news/2007/09/why-api-design-matters">http://www.infoq.com/cn/news/2007/09/why-api-design-matters</a></font></p>
<p>infoQ上的这篇文章&ldquo;API设计的&ldquo;不可承受之轻&rdquo;&rdquo;，我感觉非常好。</p>
<p>1. 他分析了优良的api设计的必要性。越底层的api影响的范围越大，也就越需要良好的设计。</p>
<p>2. 不良api设计的例子，select()方法。</p>
<p>3. 优良设计的注意事项：</p>
<ul>
    <li>API必须要提供充分的功能，以供调用者完成自己的任务。 </li>
    <li>API应该是最精简的，不要为调用者带来多余的不便。 </li>
    <li>如果没有理解API的使用环境的话，那也就不能去设计它。 </li>
    <li>通用性的API应当是与具体使用场景无关的，而特定用途的API则要充分考虑使用策略。 </li>
    <li>API应该从调用者的角度来进行设计。 </li>
    <li>好的API绝不推卸责任，把自己该做的事情<font color="#ff0000">不要</font>留给别人。 </li>
    <li>在实现API之前，就应该把API文档化。 </li>
    <li>好的API应当符合工效学（Ergonomic）。 </li>
</ul>
<p>4. 优良设计思想的传播。这部分比较新颖，一般技术文章提到的不多。也就是说，一样好东西，怎么样才能让大家都来用，而不是放在箱底。工程学的好多优良设计都应该放到教学环节中去，这样才能一代一代的往下传，而且更容易发展。</p>
          <br/>
          <span style="color:red;">
            <a href="http://mayabin.javaeye.com/blog/120223#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 04 Sep 2007 13:43:30 +0800</pubDate>
        <link>http://mayabin.javaeye.com/blog/120223</link>
        <guid>http://mayabin.javaeye.com/blog/120223</guid>
      </item>
      <item>
        <title>修改IE的默认文本编辑器</title>
        <author>mayabin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mayabin.javaeye.com">mayabin</a>&nbsp;
          链接：<a href="http://mayabin.javaeye.com/blog/119208" style="color:red;">http://mayabin.javaeye.com/blog/119208</a>&nbsp;
          发表时间: 2007年09月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>有时候安装了ultraEdit后，IE的默认的文本编辑器仍然是记事本，修改注册表可以改成uedit。</p>
<p>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\<font color="#cc0033">View Source</font> Editor\Editor Name</p>
<p>如果没有这些项，需要自己添加，在右面的栏目中有一个default项，把他的值改成uedit，比如：</p>
<p><font face="Arial">C:\Program Files\IDM Computer Solutions\UltraEdit-32\uedit32.exe</font></p>
          <br/>
          <span style="color:red;">
            <a href="http://mayabin.javaeye.com/blog/119208#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 01 Sep 2007 14:39:42 +0800</pubDate>
        <link>http://mayabin.javaeye.com/blog/119208</link>
        <guid>http://mayabin.javaeye.com/blog/119208</guid>
      </item>
      <item>
        <title>Install Ubuntu on Dell vostro 1400</title>
        <author>mayabin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mayabin.javaeye.com">mayabin</a>&nbsp;
          链接：<a href="http://mayabin.javaeye.com/blog/116886" style="color:red;">http://mayabin.javaeye.com/blog/116886</a>&nbsp;
          发表时间: 2007年08月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Recently, I bought one notebook, Dell vostro 1400.<br />
<br />
Hardware list below:<br />
<br />
CPU: Intel centrino&nbsp; duo 5470 1.66GHZ<br />
Chipset: Intel&nbsp; M965 <br />
Memory: 2GB<br />
Video: Intel X3100<br />
Netcard: broadcom 57xx Netlink<br />
Wifi: Intel 3945<br />
Hard Disk: 80 GB<br />
<br />
I want to intall dual-OS on it, one is Win XP, another is Ubuntu.<br />
XP installation is very easy, but for Ubuntu, it takes me a long time to install.<br />
<br />
I ever installed linux for many times, this is the hardest one. Why?<br />
Because the hardwares of 1400 are very very new, they can't be load by the current linux distribution.<br />
I tried Ubuntu 6.06, 7.04, 7.10 test 4,Fedora 7,Fedora 8 test1, but all failed.<br />
<br />
They don't know the Video, Wireless, even the wired netCard.<br />
I searched a lot of articles on Internet about how to install linux on vostro serials, the way they take is install the OS anyway at first, then update the kernel to load the video and wireless devices.<br />
But I can't do like that, I tried many times, the wired netcard never be known.<br />
&nbsp;<br />
So I have to try by myself, I know the more newer of the kernel, the more changes I can get.<br />
<br />
Ubuntu 7.10 developing version(Gusty) give me good news, I download the current live cd, then install.<br />
It knows the wired netcard, but when install the video device, it hang up, it can't know it.<br />
<br />
I have to do another test, fortunately I succeed.<br />
Now the wired netcard, wireless device, video, are all known and work well.<br />
The steps below:<br />
1. install Ubuntu 7.10(Gusty),&nbsp; command line system, not others.<br />
&nbsp;&nbsp;&nbsp;&nbsp; it knowns the wired netcard, so I can update the other componets.<br />
2. apt-get dist-upgrade,,,,<br />
3. apt-get install xorg<br />
4. apt-get install xserver-xorg-video-intel<br />
5. apt-get install gnome<br />
6. apt-get instll ubuntu-desktop<br />
7. apt-get instll gdm<br />
After above steps I can login the Gnome, that's exciting!<br />
<br />
8. add Chinese language support. Administration--&gt;language support<br />
<br />
Until now, I'm satisfy&nbsp; it, I can develop with Eclipse.<br />
<br />
Someone tells me a good software---Gkrellm, Fan and temperature monitor. Very good.<br />
9. apt-get install i8kutils gkrellm gkrellm-i8k<br />
10. vi /etc/modules, &quot;i8k force=1&quot;<br />
11. System--&gt;preferences--&gt;sessions--&gt;startup programs, add &quot;gkrellm&quot;, so it can auto load when computer start.<br />
<br />
Notice:<br />
1. If you get &quot;can't get gnome theme -human&quot; when in logon screen, that's because missing ubuntu-desktop.<br />
2. If you can't get network connection, but all hardware works well. please check Network manager, enable roaming model, so you can get ip by dhcp when start.<br />
<br />
<br />
Enjoy yourself.&nbsp; Gusty is developing version, pay attention!<big><font color="#008000" face="Trebuchet MS"></font></big>
          <br/>
          <span style="color:red;">
            <a href="http://mayabin.javaeye.com/blog/116886#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 26 Aug 2007 16:15:12 +0800</pubDate>
        <link>http://mayabin.javaeye.com/blog/116886</link>
        <guid>http://mayabin.javaeye.com/blog/116886</guid>
      </item>
      <item>
        <title>无线路由配置要点</title>
        <author>mayabin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mayabin.javaeye.com">mayabin</a>&nbsp;
          链接：<a href="http://mayabin.javaeye.com/blog/111884" style="color:red;">http://mayabin.javaeye.com/blog/111884</a>&nbsp;
          发表时间: 2007年08月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>现在无线设备越来越普遍，对于无线路由，默认安装后就可以使用，但是要想用好，还是需要一些注意事项。</p>
<p>1.用户名和密码管理。更改默认的用户名和密码，增强安全性。</p>
<p>2.无线接入点的名称尽量复杂。</p>
<p>3.关闭SSID广播。</p>
<p>4.使用MAC地址过滤。</p>
<p>5.尽量不用DHCP功能。</p>
<p>6.使用安全密码验证。</p>
<p>以上几点做到后，就可以让你的无线网络即畅通又安全。</p>
<p>对于不同的路由设备，配置方式各不相同，可以查看说明书查找以上的配置点。</p>
          <br/>
          <span style="color:red;">
            <a href="http://mayabin.javaeye.com/blog/111884#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 13 Aug 2007 21:46:03 +0800</pubDate>
        <link>http://mayabin.javaeye.com/blog/111884</link>
        <guid>http://mayabin.javaeye.com/blog/111884</guid>
      </item>
      <item>
        <title>[翻译]在spring框架中添加HibernateInterceptor使得quartz可以调用Hibernate Se</title>
        <author>mayabin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mayabin.javaeye.com">mayabin</a>&nbsp;
          链接：<a href="http://mayabin.javaeye.com/blog/111266" style="color:red;">http://mayabin.javaeye.com/blog/111266</a>&nbsp;
          发表时间: 2007年08月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial">翻译的这篇文章包含了好几个知识点，虽然短了点儿，但是非常有用。</font></p>
<p><font face="Arial">1.spring</font></p>
<p><font face="Arial">2.hibernate</font></p>
<p><font face="Arial">3.quartz--定时调度工具，spring已经做了封装，也可以单独使用。</font></p>
<p><font face="Arial">4.OpenSessionInViewFilter--web框架下的一个filter，能够让web request使用单一的hibernate session。</font></p>
<p><font face="Arial">有的j2ee项目在web.xml文件中添加了OpenSessionInViewFilter，其目的是给web request提供单一的hibernate session，但是它也只能给web request提供hibernate session。也就是说，如果有某一个hibernate请求不是经由web request发起的，而是由quartz这样的定时任务发起的，那么quartz怎么样才能得到hibernate session呢？</font></p>
<p><font face="Arial">解决办法就是使用HibernateInterceptor。当quartz发起hibernate session请求时，HibernateInterceptor会提供一个hibernate session给它。</font></p>
<p><font face="Arial">配置文件如下：</font></p>
<p><font face="Arial">&nbsp;</font><font face="Arial"></font></p>
<div class="code_title">xml 代码</div>
<p>&nbsp;</p>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="comments">&lt;!--&nbsp;Declaration&nbsp;of&nbsp;HibernateInterceptor&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;hibernateInterceptor&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;org.springframework.orm.hibernate3.HibernateInterceptor&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;sessionFactory&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">ref</span><span>&nbsp;</span><span class="attribute">bean</span><span>=</span><span class="attribute-value">&quot;sessionFactory&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">bean</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;Manager&nbsp;template&nbsp;&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;txProxyTemplate&quot;</span><span>&nbsp;</span><span class="attribute">abstract</span><span>=</span><span class="attribute-value">&quot;true&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;org.springframework.transaction.interceptor.TransactionProxyFactoryBean&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;transactionManager&quot;</span><span>&nbsp;</span><span class="attribute">ref</span><span>=</span><span class="attribute-value">&quot;transactionManager&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;transactionAttributes&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">props</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">prop</span><span>&nbsp;</span><span class="attribute">key</span><span>=</span><span class="attribute-value">&quot;save*&quot;</span><span class="tag">&gt;</span><span>PROPAGATION_REQUIRED</span><span class="tag">&lt;/</span><span class="tag-name">prop</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">prop</span><span>&nbsp;</span><span class="attribute">key</span><span>=</span><span class="attribute-value">&quot;remove*&quot;</span><span class="tag">&gt;</span><span>PROPAGATION_REQUIRED</span><span class="tag">&lt;/</span><span class="tag-name">prop</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">prop</span><span>&nbsp;</span><span class="attribute">key</span><span>=</span><span class="attribute-value">&quot;update*&quot;</span><span class="tag">&gt;</span><span>PROPAGATION_REQUIRED</span><span class="tag">&lt;/</span><span class="tag-name">prop</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">prop</span><span>&nbsp;</span><span class="attribute">key</span><span>=</span><span class="attribute-value">&quot;create*&quot;</span><span class="tag">&gt;</span><span>PROPAGATION_REQUIRED</span><span class="tag">&lt;/</span><span class="tag-name">prop</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">prop</span><span>&nbsp;</span><span class="attribute">key</span><span>=</span><span class="attribute-value">&quot;*&quot;</span><span class="tag">&gt;</span><span>PROPAGATION_REQUIRED,readOnly</span><span class="tag">&lt;/</span><span class="tag-name">prop</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">props</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;preInterceptors&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">list</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">ref</span><span>&nbsp;</span><span class="attribute">bean</span><span>=</span><span class="attribute-value">&quot;hibernateInterceptor&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">list</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">bean</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;Sample&nbsp;Manager&nbsp;that&nbsp;encapsulates&nbsp;business&nbsp;logic&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;userManager&quot;</span><span>&nbsp;</span><span class="attribute">parent</span><span>=</span><span class="attribute-value">&quot;txProxyTemplate&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;target&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;com.acme.service.impl.UserManagerImpl&quot;</span><span>&nbsp;</span><span class="attribute">autowire</span><span>=</span><span class="attribute-value">&quot;byName&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">bean</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
<p><br />
其中，&lt;!-- Declaration of HibernateInterceptor --&gt;部分定义了HibernateInterceptor；</p>
<p>&nbsp;&lt;!-- Manager template&nbsp; --&gt;部分定义了模板，并且加入了HibernateInterceptor；</p>
<p>&lt;!-- Sample Manager that encapsulates business logic --&gt;部分定义业务逻辑中的bean，记住，一定让他使用模板。</p>
<p>译者言：</p>
<p>1.这样做使得非web request可以使用j2ee资源。</p>
<p>2.我的做法和上面有些差别，但是也成功了。 我的做法是：</p>
<p>我没有定义&lt;!-- Declaration of HibernateInterceptor --&gt;这一部分，只定义了模板，在添加bean的时候使用模板。</p>
<p>&nbsp;</p>
<p>原文如下：<br />
Using HibernateInterceptor to bind Hibernate Sessions for Quartz jobs in Spring<br />
I use the OpenSessionInViewFilter to provide a single Hibernate Session for each request to my Spring webapplications. It works transparently and well, but only for web requests. So how do you provide a Hibernate Session to your background jobs (like Quartz scheduled jobs)? </p>
<p>I wire a HibernateInterceptor into my proxy template for all the managers in my application. With this configuration, when Quartz fires up a job and makes a call to the manager/service layer the HibernateInterceptor binds a Hibernate Session to the background thread. Beautiful. </p>
<p>It looks something like this:(代码同上)<br />
</p>
          <br/>
          <span style="color:red;">
            <a href="http://mayabin.javaeye.com/blog/111266#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 11 Aug 2007 16:58:00 +0800</pubDate>
        <link>http://mayabin.javaeye.com/blog/111266</link>
        <guid>http://mayabin.javaeye.com/blog/111266</guid>
      </item>
  </channel>
</rss>