今天碰到一个这样的问题:
有一个表包含了一个大文本字段,查询时候发现有没有带大文本字段执行的速度相差3-5倍,于是想着使用两个类同时映射到同一张表,假设这两个类分别是A、B,A中除了不包含大文本字段外,其他字段都包含;B直接继承A类并增加大文本字段。
分别编写两个映射文件,这样如果我需要大文本字段的内容的查询就用B进行查询,不需要大文本字段内容的查询就用A进行查许。
但是在实际运行中发现,对A进行查询的时候,Hibernate发出了两条SQL语句,一条是对A进行查询,另外一条对B查询。很是纳闷,这样一来不仅性能没有提升反倒而下降。
经过试验找到了解决的办法:
再增加一个类名为Base类,把A中所有属性以及方法搬到Base类来,A extends Base,同时B extends Base,映射文件无需改动,Base不做任何映射! 问题解决!
以后实际应用在使用到大字段的时候都小心谨慎,毕竟性能的差距很大,大家不妨试验一下。
环境:Hibernate 3.0 , SQL SERVER 2000, DB2 v8.2
心情: 一般