Monthly Archives: June 2010

[Hibernate] 用HQL选取若干个属性拼成一个对象

用HQL返回整个对象或者某个属性并不希奇。但有时候我们希望返回部分属性组成的轻量级对象(Date transfer object),比如你只想得到一篇文章的标题和作者,而不想看CLOB格式的正文。 HQL已经支持这个东西。 比如 select new Family(mother, mate, offspr) from DomesticCat as mother join mother.mate as mate left join mother.kittens as offspr 你还可以返回 数组,MAP等对象。 See http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html#queryhql-select 这种东西的好处是去掉了"lazy"相关的烦恼。 以LOB字段为例,有的人会建议把Lob字段设成Lazy-Load,仍然返回Model对象,只不过Lob字段为空。 但这样做的坏处是:当你在web层拿到这样一个Model对象是,你不确定它的Lob字段是不是为空。这种不确定性是面向契约编程的大忌。

javax.xml.bind.JAXBContext.newInstance() 很慢

今天作性能调优时发现这个问题。 在Tomcat里,这个方法执行一次居然要 6-15毫秒 (我的电脑性能还可以)。 在批量处理时这就会搞死人。 有人也发现这个问题,并提出了缓存方案。     http://robaustin.wikidot.com/how-to-improve-perforamance-of-jaxb