ibatis-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alexei Sokolov <alexei.soko...@gmail.com>
Subject Re: help with ibatis 3 & objectwrapper, metaobject, etc.
Date Thu, 25 Feb 2010 06:00:29 GMT
Clinton,

Sorry, I did not mean to criticize the framework. I'm just wondering if I
understand how you do things, and if the code can be improved upon.

What I see so far is that I cannot separate object construction mechanism
from the client view of the object. Think StringBuilder/String in java,
ListBuffer/List in scala, and other similar classes. I want users of my
classes to see String, List, etc., but I want ibatis to use StringBuilder
(stringbuilder is not the real usecase, but just to show my point) and
ListBuffer to construct them. It could be due to how I want users to see the
data, or it could be due to the fact that I can construct the object more
efficiently this way, or I want it to be immutable.

If you'll say that such pattern is outside of ibatis scope, it is OK.
However, I think this refactoring may benefit others, including scala
users.

Alex

On Wed, Feb 24, 2010 at 8:44 PM, Clinton Begin <clinton.begin@gmail.com>wrote:

> LOL... sorry I thought that was funny.  :-)
>
> But really, you're really polarizing this discussion with broad criticisms
> of how our software is designed.  It's hard to comment on your needs or to
> help you.
>
> I'm not exactly sure what you're trying to do, but you're digging pretty
> deep into the guts of the system, parts that weren't really intended for
> other people to extend or change (or at the very least at your own risk).
>
> So it seems to me that if you have to dig that deep into the core of the
> library, it's probably the wrong fit and you'll have an uphill battle and a
> poor experience overall.
>
> So rather than criticize our framework because it doesn't do what you need
> it to, it might be best if you look for a better fit.  There are others.
> Hibernate is one, and yes it's well designed.
>
> As for a friendly community, I can assure you that if you broadly criticize
> them because their square peg doesn't fit into the round hole, you'll
> probably meet with a similar reaction.
>
> Cheers,
> Clinton
>
>
> On Wed, Feb 24, 2010 at 9:03 PM, Alexei Sokolov <alexei.sokolov@gmail.com>wrote:
>
>> Not sure what are you trying to say.
>>
>> That hibernate has friendly community? Or that they have a better designed
>> library?
>>
>>
>> -- Alex
>> Sent from my mobile
>>
>> On Feb 24, 2010, at 7:28 PM, Clinton Begin <clinton.begin@gmail.com>
>> wrote:
>>
>>  Yes, iBATIS has a mechanism that allows you to do what you want to do.
>> It's called Hibernate.
>>
>> <https://www.hibernate.org/>https://www.hibernate.org/
>>
>> Enjoy.
>>
>> On Wed, Feb 24, 2010 at 8:11 PM, Alexei Sokolov <<alexei.sokolov@gmail.com>
>> alexei.sokolov@gmail.com> wrote:
>>
>>> Well, Microsoft Office has Excel, which is a good spreadsheet. Does
>>> ibatis has a mechanism that allows me to do what I want to do?
>>>
>>> If intented use for objectwrapper was scala, why didn't you call it
>>> scalaobjectwrapper? Obviously you had other potential uses in mind.
>>>
>>> BTW, can you point me to some scala examples? Can ibatis map java lists
>>> and maps to scala lists and maps?
>>>
>>> Thanks,
>>> -- Alex
>>> Sent from my mobile
>>>
>>> On Feb 24, 2010, at 6:35 PM, Clinton Begin < <clinton.begin@gmail.com>
>>> clinton.begin@gmail.com> wrote:
>>>
>>> What you're trying to do with ObjectWrapper is beyond its intended use.
>>> It was never a consideration nor an intention for the ObjectWrapper to
>>> instantiate objects.  ObjectWrapper was originally implemented to support
>>> Scala types, and perhaps to support a custom property naming convention or
>>> some other type (e.g. XML).
>>>
>>> It was not intended to change or intercept the result object lifecycle or
>>> override the result object entirely.
>>>
>>> You can call it a design problem if you like.  But it's kind of like
>>> saying Microsoft Word has a design problem because it isn't a very good
>>> spreadsheet.
>>>
>>> Clinton
>>>
>>> On Wed, Feb 24, 2010 at 11:11 AM, Alexei Sokolov <<alexei.sokolov@gmail.com><alexei.sokolov@gmail.com>
>>> alexei.sokolov@gmail.com> wrote:
>>>
>>>> Hello everyone,
>>>>
>>>> I'm new here, but either I don't understand ibatis internals or you have
>>>> a design problem. First, let me share my understanding of how ibatis handles
>>>> mapping of result sets to beans:
>>>>
>>>> In *ResultSetHandler.getRowValue() method you create object instance
>>>> using objectfactory. then you create metaobject for it, which in turn
>>>> creates objectwrapper for that object instance. Then you use meta object
>>>> methods to populate property values on that object instance. During this
>>>> process both metaobject and objectwrapper essentially write values directly
>>>> to the object instance returned from object factory.
>>>>
>>>> Now, consider this scenario: let's say my object wrapper constructs
>>>> intermediate object first and populates its values. Than when I'm done
>>>> processing a row, I want to create actual object instance that will be
>>>> returned to the client. How do I do this with the current implementation?
>>>> Ideally, it will be nice if ObjectWrapper had a method, say
>>>> 'getPopulatedInstance()' and then line 179 in
>>>> FastResultSetHandler.getRowValue() (and other such places) could be
>>>> rewritten like
>>>>
>>>> resultObject = foundValues ?
>>>> metaObject.getObjectWrapper().getPopulatedInstance() : null;
>>>>
>>>> instead of
>>>>
>>>> resultObject = foundValues ? resultObject : null;
>>>>
>>>> In other words, it would be nice if objectwrapper is able to create new
>>>> instances in addition to being able to work as decorator.
>>>>
>>>> Does it make sense at all?
>>>>
>>>> Thanks,
>>>> Alex
>>>>
>>>>
>>>
>>
>

Mime
View raw message