Return-Path: Delivered-To: apmail-ibatis-user-java-archive@www.apache.org Received: (qmail 76472 invoked from network); 13 Jul 2005 14:24:01 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 13 Jul 2005 14:24:01 -0000 Received: (qmail 15375 invoked by uid 500); 13 Jul 2005 14:23:55 -0000 Delivered-To: apmail-ibatis-user-java-archive@ibatis.apache.org Received: (qmail 15250 invoked by uid 500); 13 Jul 2005 14:23:54 -0000 Mailing-List: contact user-java-help@ibatis.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user-java@ibatis.apache.org Delivered-To: mailing list user-java@ibatis.apache.org Received: (qmail 15179 invoked by uid 99); 13 Jul 2005 14:23:53 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 13 Jul 2005 07:23:53 -0700 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests= X-Spam-Check-By: apache.org Received-SPF: pass (asf.osuosl.org: local policy) Received: from [128.100.132.42] (HELO bureau14.utcc.utoronto.ca) (128.100.132.42) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 13 Jul 2005 07:23:50 -0700 Received: from zarar.sis.utoronto.ca ([128.100.105.83] HELO zarar ident: IDENT-NOT-QUERIED [port 1358]) by bureau14.utcc.utoronto.ca with SMTP id <890084-467>; Wed, 13 Jul 2005 10:22:51 -0400 Message-ID: <008301c587b6$5988c3a0$53696480@sis.utoronto.ca> From: "Zarar Siddiqi" To: , References: <370768f605071303326d5d0307@mail.gmail.com> <006901c587b2$11aa5070$53696480@sis.utoronto.ca> Subject: Re: queryForList not returning null Date: Wed, 13 Jul 2005 10:22:50 -0400 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2527 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2527 X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N One advantage as I see it of making such wrapper classes is that you get wrap SQLExceptions into your own custom Exception in just one place rather than having to do a try/catch block which wraps the exception in every method that accesses a database. This alone was worth it for me. It made code much neater and readable. Same goes for logging. As for cost of training and your other points about programmers not understanding an in-house API right off-the-bat, I think you're somewhat exaggerting the issue. I'm not radically changing the API (or even modifying it really) at all, the methods can still have the same name (and even the same parameter names!) so I don't see how it can cost a company money. Besides, if a programmer is so inclined to do so, they can always call something like Globals.getSqlMapClient() to do stuff manually. Wrapping certain methods provided by SqlMapClient sure beats the hell out of doing log.isDebugEnabled(), log.isInfoEnabled, try/catches in every method that calls a db. Just my $.02 on the subject as a guy who's trying to get there. :-) Zarar ----- Original Message ----- From: "Larry Meadors" To: Sent: Wednesday, July 13, 2005 10:04 AM Subject: Re: queryForList not returning null > Where I work, we did that too, and it used to be one of our > development standards. In fact, I was a leading proponent for the > decision. > > However, we stopped when we realized that there are two choices you > can make when you go down that path: > > 1) Mimic the existing API as closely as possible. > 2) Change the API so that it suits your tastes better. > > Both when you look at them closely add very little value. > > In the first case, you add very little value, but gain the ability to > hire help that can quickly learn the API, especially if they have used > the wrapped API. the downside is that you create a bit more code to > maintain. > > In the second case, you may improve the API, but you add more code and > documentation to maintain, and it comes at the expense of training - > you will never find a developer off-the-shelf who knows your API. > Finding developers who know the SQLMap API is not difficult. > > In BOTH cases, it only ever matters if you change the API frequently, > which i think everyone agrees is not a great idea. > > Just my $.02 on the subject as a guy who has been there, and done that. > :-) > > Larry > > > On 7/13/05, Zarar Siddiqi wrote: >> What I do is that I have a base class (BaseDAOSqlMap) which encapsulates >> all >> my data access. In it are methods like getList(String,Object) which >> calls >> queryForList which allows me to define custom behavior of what getList() >> returns. That way if the implementation for queryForList() changes (I >> know >> its unlikely), I have to change my code in one place. Just a thought. >> >> Zarar >> >> >> >> ----- Original Message ----- >> From: "Kinjal Sonpal" >> To: "iBatis mailing list" >> Sent: Wednesday, July 13, 2005 6:32 AM >> Subject: queryForList not returning null >> >> >> > Dear All, >> > >> > Today while using queryForList method, I realised that if there are no >> > records in the resultset, it returns an empty list unlike >> > queryForObject (which returns null). Is it an undocumented feature or >> > that's how it should have been? >> > >> > After each call, I have to manually check for the size of the list. >> > Are there any known workarounds? Could not find much information over >> > the internet or ibatis website/lists. >> > >> > Please advise. >> > >> > Thanks and regards, >> > Kinjal >> > >> >> >> >