Hi Collin,

If you can do it with straight-up JDBC, you can probably do it with
iBATIS.  I sense you may be looking for some magic in the form of
avoiding N+1 selects.

Based on your example,  perhaps the following two value objects are called for:

UserVO
   Integer id;
   String firstName;
   String lastName;

   // List of UserPropertyVOs
   List userProperties;

UserPropertyVO
  Integer id;
  Integer userId;
  String propertyName;
  String propertyValue;

If you structure your result set properly and specify some result maps
per the examples in the Developers Guide, you can probably get iBATIS
to cough up a List of UserVOs that each contain a List of
UserPropertyVOs.  It would be up to your application to read/eat/loop
the data from there.

Perhaps there are other strategies as well.

Ted


On 27/02/07, Collin Peters <[EMAIL PROTECTED]> wrote:
Does iBatis have any kind of built-in support for
entity-attribute-value (EAV) style tables?  An EAV table (or key-value
table) is one where the data is represented in rows instead of in
columns.   A simple example is here:
http://www.devshed.com/c/a/MySQL/Database-Design-Using-KeyValue-Tables/

So for example, if you had a users table such as:
USERS
----------
user_id  integer,
firstname text,
lastname text

And you needed to represent properties for each users, you could add a
few new columns:
property1  text,
property2 text,
etc...

But the problem is that you are locked down by the columns. i.e. for
each property you add, you need a to add a column to represent that
property.  EAV would re-structure this by having another table called
user_properties which would look like:
user_property_id integer,
user_id integer,
property_name text,
property_value text,

So you gain flexibility at the cost of complexity.  We have a
situation like this and I am wondering if iBatis can do some kind of
magic to convert the properties automatically.  Let me know if you
need a more concrete example to understand this.  Before I spend the
time to do that I will see if anyone has any comments.

Regards,
Collin Peters

Reply via email to