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 <[EMAIL PROTECTED]> 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.