ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Vadim Grinshpun <va...@ll.mit.edu>
Subject Re: interface property predicaments
Date Tue, 11 Jul 2006 14:42:35 GMT
Well, here's an example of when you'd want to separate the interface 
from the implementation.
Suppose I need to support lazy loading. (I know iBATIS has some way to 
do this, but it is currently not really documented, so I'd rather roll 
my own for now). A simple way to do this is to store keys for the 
lazily-loaded bits in the bean for later use. However, I would not want 
to expose those properties to the outside world, so I'd only have them 
in the implementation class, keeping the interface clean. Wouldn't you 
say this is a valid use of interfaces?

And yes, I've run into the same problem as Paul... haven't really found 
a clean workaround for it yet. I do believe this is a bug in iBATIS, 

-Vadim



Larry Meadors wrote:
> So...I do not understand..your beans are interfaces?
>
> How often do you swap out the implementation of your beans? ;-)
>
> Larry
>
>
> On 7/10/06, Paul Benedict <paul4christ79@yahoo.com> wrote:
>> I have two interfaces: Article and Person. My problem is with my Article
>> implementation:
>>
>> public interface Article {
>>   public Person getPerson();
>> }
>>
>> public class ArticleImpl extends Article {
>>   private Person person;
>>   public Person getPerson() {
>>     return person;
>>   }
>>   public void setPerson(Person person) {
>>     this.person = person;
>>   }
>>   // required for ibatis object construction
>>   public void setPerson(PersonImpl person) {
>>      this.person = person;
>>    }
>>  }
>>
>> I am using ibatis to construct it as follows:
>>
>> <resultMap id="articleMap" class="Article">
>>     <result property="person.id" column="person_id" />
>> </resultMap>
>>
>> I get that annoying "cannot find WRITABLE property id in Person" message
>> because it is looks at Article.getPerson() which returns the 
>> interface not
>> implementation. But why should that matter? This is wrong behavior, 
>> imo. I
>> know ibatis constructs the inner object first. It will create a 
>> PersonImpl,
>> set property "id" from column "person_id", and then call the setter on
>> Article.
>>
>> Otherwise, I am left believing ibatis cannot work with classes which 
>> need to
>> implement a read-only interface..... or someone can recommend the 
>> solution,
>> which I might be unable to find?
>>
>> Paul
>>
>>
>>  ________________________________
>> How low will we go? Check out Yahoo! Messenger's low PC-to-Phone call 
>> rates.
>>
>>
>


Mime
View raw message