在用hibernate做查询的时候有时候可能要用到一点小技巧
假设:company和businessarea是父子一对多的关系,也就是多个company对一个area
1.从页面中传来一个areaID和一个company,一个action所做的就是把这个company存在这个areaID里面,要怎么做?我想想呀,是不是先用areaDAO来根据这个IDload出一个area来,然后在用company.setArea()来搞定?这么作肯定就要读两次数据库了,在性能上肯定是浪费;哪该怎么作哪?其实要做的不就是在company表里面存进去一组数据,并且外键为这个areaID,但是真是没有什么好的办法来做了。
但是在读取的时候还是有好办法的。另一个例子,传来一个areaID,要读出这个ID下面的所有company,就能用一句简单的hsql来完成,而不用先读出area在读出list了,就用"from company as com where com.area.id="+id,呵呵,干净漂亮的完成了
刚学透明持久的时候觉得sql真他妈的垃圾,现在看来还真是有他必须存在依据了