ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jose Lora" <Jose.L...@meredith.com>
Subject RE: iBatis annotation related questions
Date Fri, 19 Feb 2010 15:34:57 GMT
I had to do it once, but we knew that was going to happen so we pushed the SLQ code down to
the database (stored/procedures/ macros) so making the change didn't required to touch our
Java/XML code (well just a bit), the Java code look simpler (use good names for your DB objects
J ) and the DBA was super happy to have a chance to "bless" the code. I am not saying is the
best for everybody but it worked well for us.

 

From: Clinton Begin [mailto:clinton.begin@gmail.com] 
Sent: Friday, February 19, 2010 10:27 AM
To: user-java@ibatis.apache.org
Subject: Re: iBatis annotation related questions

 

If it's a concern, I'd stick with XML.  But in my 12 years in this business, I've never swapped
out one database wholesale for another.

Clinton

2010/2/19 Ing. Jan Novotný <novotnaci@gmail.com>

Thanks. Did you notice my question about DB dialect porting issues? What is your opinion on
this matter?

Jan

 

2010/2/19 Clinton Begin <clinton.begin@gmail.com>

There will be a new release by then, probably this weekend.


On 2010-02-19, Ing. Jan Novotný <novotnaci@gmail.com> wrote:
> 3rd March.
>
> 2010/2/19 Clinton Begin <clinton.begin@gmail.com>
>
>> When is your workshop?
>>
>> On 2010-02-18, Ing. Jan Novotný <novotnaci@gmail.com> wrote:
>> > Thank you guys for sharing your experience. It's pretty good to hear
>> > that
>> > combining annotations and XML approach works in practice.
>> >
>> > My first thought was, that in case of large systems I wouldn't be able
>> > tu
>> > guess whether I should look in the Java or XML first when searching for
>> > particular statement definition. Next thought was about portability - we
>> > were forced a couple of times to translate statements in the XML
>> definitions
>> > from one DB dialect into another. That is something one must count with
>> when
>> > writing pure SQL statements. But when they are scattered over these two
>> > kinds of files, I will have to move all statements from interfaces to
>> > the
>> > XML and then make a dialect translation. Maybe there could be a way of
>> > extending former interface with annotations override , but this doesn't
>> seem
>> > much nice to me. What's your view on this?
>> >
>> > Btw. the presentation will be more of a workshop and I thought that
>> > everybody starts just with Maven pom and downloads few libraries from
>> > the
>> > public repositories. There the latest one is 3-beta-9. Of course with
>> some
>> > effort I could compile new artifact form trunk a distribute it to their
>> > local repositories, you're right.
>> >
>> > Jan
>> >
>> > 2010/2/19 Nathan Maves <nathan.maves@gmail.com>
>> >
>> >> I completely agree.
>> >>
>> >> I too have a project using IB3 and I am really loving mixing the two
>> >> together.  I would give it a try before trying to corner yourself into
>> >> using
>> >> just one approach.
>> >>
>> >>
>> >> Nathan Maves
>> >> nathan.maves@gmail.com
>> >>
>> >>
>> >>
>> >> On Feb 18, 2010, at 4:09 PM, Clinton Begin wrote:
>> >>
>> >> Just curious, why are you limited to 3.0 Beta 9?
>> >>
>> >> As for annotations vs. XML, I was worried about splitting between the
>> two
>> >> at first, and thought that it might be good to choose one approach and
>> >> stick
>> >> with it.  But that would mean you'd have to choose XML, as annotations
>> >> can't
>> >> compete.  That said, I've been working on a project mixing annotations
>> and
>> >> XML, and I'm very happy with the results.  I've found that INSERT,
>> UPDATE
>> >> and DELETE statements pretty much always remain as annotations, along
>> with
>> >> simple SELECT statements.  The only things I end up putting in XML are
>> >> very
>> >> complex queries that include collections or associations.  Overall, it
>> >> seems
>> >> quite clean and easy to follow.  I've never been in a situation where I
>> >> was
>> >> confused about it.
>> >>
>> >> Cheers,
>> >> Clinton
>> >>
>> >> 2010/2/18 Ing. Jan Novotný <novotnaci@gmail.com>
>> >>
>> >>> Hello Clinton,
>> >>>
>> >>>    many thanks for your answers. They made a lot of things much
>> >>> clearer
>> >>> to
>> >>> me - "the whitepaper" set a lot of expectations in the minds of many
>> >>> people
>> >>> (including me), so that's why I asked those questions. I am sure
>> someone
>> >>> will ask me those questions at the presentation, so I want to be
>> >>> prepared.
>> >>>    I found some more configuration options in the trunk, but for the
>> >>> presentation I am limited to 3-beta-9 where they didnť work. But it's
>> >>> good
>> >>> to know, that those issues got answered.
>> >>>   My final question - would you encourage using annotations after all?
>> >>> From the limited experience with iBatis 3 I have, they could be used
>> only
>> >>> to
>> >>> simple cases, but they make the code fragmented among annotations and
>> >>> XML. I
>> >>> can imagine that this could be very confusing in the large scale, so
>> >>> maybe I
>> >>> should recommend to attendees of the presentation to better stick with
>> >>> good
>> >>> old XML. What do you think?
>> >>>
>> >>> Thanks,
>> >>> Jan
>> >>>
>> >>> Offtopic:
>> >>> P.S.: you seem very resignated to the Java - does the folks from
>> >>> Microsoft
>> >>> got you? :)
>> >>>
>> >>> 2010/2/18 Clinton Begin <clinton.begin@gmail.com>
>> >>>
>> >>>> Hi Jan,
>> >>>>
>> >>>>
>> >>>> >> expectations come from iBatis 3 Whitepaper
>> >>>>
>> >>>> Just to be clear, it wasn't a "white paper" it was a community
>> >>>> whiteboard
>> >>>> for brainstorming ideas. So it contained goals and ideas, but there
>> was
>> >>>> never a commitment to any of them.
>> >>>>
>> >>>>
>> >>>> >> Multilevel Configuration
>> >>>>
>> >>>> Ultimately I decided not to implement it this way because it became
>> hard
>> >>>> to trace where behavior was configured.  To fully understand how
a
>> >>>> statement
>> >>>> might behave or perform, you would have had to look in 3 places.
 I
>> >>>> wasn't
>> >>>> satisfied with that, so I made it to be either XML or Annotations
per
>> >>>> statement.  You can happily mix mappers with annotations or xml
>> >>>> statements,
>> >>>> but each statement must use either one or the other.
>> >>>>
>> >>>>
>> >>>> >> to state all properties in order to alter the single one
>> >>>>
>> >>>> That's configurable.  See the docs under the automappingBehavior
>> setting
>> >>>> (I think that's what it's called).
>> >>>>
>> >>>> >>annotations
>> >>>>
>> >>>> You think it's unpleasant?  You should have seen me the day that
I
>> >>>> had
>> >>>> to
>> >>>> remove WORKING CODE from my system because Sun changed the behavior
>> >>>> of
>> >>>> Java
>> >>>> Annotations between Java 1.5 and 1.6.
>> >>>>
>> >>>> In a nutshell, circular references are not supported in the
>> Annotations
>> >>>> framework.  All of your best hopes and dreams of having something
>> better
>> >>>> are
>> >>>> dashed by this one limitation.  There was a workaround in Java 1.5,
>> but
>> >>>> Sun
>> >>>> considered it a compiler bug, so they "fixed" the workaround in
JDK
>> 1.6.
>> >>>>  If
>> >>>> you want to see it, you can dig back through a few hundred commits
>> >>>> and
>> >>>> see
>> >>>> where I removed that behavior.
>> >>>>
>> >>>> A shame.  If this was C# I would have been able to fully realize
the
>> >>>> vision of where we wanted to take the annotation (or attributes
in
>> >>>> C#)
>> >>>> approach.
>> >>>>
>> >>>> **>> 3 combinations of annotations and xml
>> >>>>
>> >>>> In general, I recommend using annotations for simple things, and
use
>> XML
>> >>>> for anything more complicated.  Sorry, but Java annotations are
just
>> too
>> >>>> messy, limited and ugly.  There's a million reasons why we had to
>> scale
>> >>>> back
>> >>>> the behavior and limit it to what you see now.  If you want to
>> >>>> understand
>> >>>> why, I encourage you to try to implement some of your suggestions.
>> >>>> You'll
>> >>>> find the same challenges.
>> >>>>
>> >>>> >> 4 automatic (generated) SQL
>> >>>>
>> >>>> Yes, I completely ditched the idea of generating SQL.  It's just
a
>> road
>> >>>> that I wasn't prepared to take iBATIS down.
>> >>>>
>> >>>> >> 5 dynamic sql in annotations
>> >>>>
>> >>>> Yes, SelectProvider and the SQL Builder framework are the only way
>> >>>> (other
>> >>>> than writing your own).  I wasn't about to start putting XML embedded
>> in
>> >>>> SQL
>> >>>> embedded in strings embedded in annotations... that's out of hand
and
>> >>>> bad
>> >>>> practice IMHO.
>> >>>>
>> >>>> I appreciate your questions, but please realize that everything
was
>> >>>> considered.  Some things were left out for very good design reasons,
>> >>>> others
>> >>>> because of limitations in Java and others we might just not have
had
>> >>>> a
>> >>>> chance to implement yet.
>> >>>>
>> >>>> Clinton
>> >>>>
>> >>>> 2010/2/18 Ing. Jan Novotný <novotnaci@gmail.com>
>> >>>>
>> >>>>> Hello,
>> >>>>>
>> >>>>>
>> >>>>>    I am going to have a presentation about iBatis 3 at Czech
JUG. I
>> >>>>> have
>> >>>>> a 3-year experience with iBatis-2 and now I am doing little
research
>> on
>> >>>>> what's new in upcoming iBatis 3 release. Most of my expectations
>> >>>>> come
>> >>>>> from
>> >>>>> iBatis 3 Whitepaper at the iBatis Confluence site. Now I am
testing
>> the
>> >>>>> new
>> >>>>> version and there are some things I didn't expect. I will be
very
>> >>>>> pleased if
>> >>>>> anyone capable could answer me following questions so that I
may
>> >>>>> forward
>> >>>>> them to the attendees of CZ JUG:
>> >>>>>
>> >>>>> *  1) multilevel configuration*
>> >>>>>       Firstly I thought that there would be a chance to override
>> >>>>> less
>> >>>>> prioritized level of configuration. Meaning, that if I have
SQL
>> >>>>> represented
>> >>>>> in an @Select annotation and I create XML statement in mapper
file
>> with
>> >>>>> the
>> >>>>> same name, this XML declaration will take over the annotation
and
>> will
>> >>>>> be
>> >>>>> used instead. Reality is that iBatis will fail to start complaining
>> >>>>> about
>> >>>>> duplicate declaration. As I discovered, I can use only one or
the
>> other
>> >>>>> way
>> >>>>> - I can combine XML file with annotation based Java DAO, but
they
>> must
>> >>>>> not
>> >>>>> overlap in the sense of statement declaration. Is that right?
Why is
>> >>>>> that
>> >>>>> done this way?
>> >>>>>       Next I thought there could be some means to explicitly
say,
>> that
>> >>>>> some parts of the lower configuration level fit for me and therefore
>> >>>>> ease my
>> >>>>> life a little. Let say I have ResultMap statement in XML
>> configuration
>> >>>>> and
>> >>>>> 95% of its properties is fine by convention, but I need only
to
>> specify
>> >>>>> more
>> >>>>> single property or declare association / collection mapping.
In that
>> >>>>> case I
>> >>>>> have to state all properties in order to alter the single one
that
>> >>>>> is
>> >>>>> needed
>> >>>>> to be extra taken care of (or at least these are my findings
from
>> >>>>> the
>> >>>>> tests
>> >>>>> I wrote). What I really want to say is: use convention to all
>> >>>>> properties
>> >>>>> except those that I explicitly configure in XML - that is not
>> possible,
>> >>>>> is
>> >>>>> it?
>> >>>>>
>> >>>>> *  2) annotations*
>> >>>>>       Another unpleasant surprise was, that I am not able to
get
>> along
>> >>>>> with annotations to specify <collection> mapping - annotation
>> >>>>> @Collection is
>> >>>>> missing. Also @Association is not present - but as I discovered,
>> >>>>> it's
>> >>>>> possible to write @Result annotations in the way that associated
>> object
>> >>>>> gets
>> >>>>> mapped. In documentation I found a statement, that annotations
in
>> Java
>> >>>>> aren't powerfull enough to make some things possible, but I
can't
>> make
>> >>>>> up
>> >>>>> why @Collection annotation is not possible to be made.
>> >>>>>
>> >>>>> *  3) combination of XML and annotations*
>> >>>>>       I tried combination of XML and annotations (due to lack
of
>> >>>>> @Collection annotation) to specify @Select annotation but specify
>> >>>>> output as
>> >>>>> a ResultMap mapping in the XML configuration. But that's not
>> >>>>> possible
>> >>>>> too.
>> >>>>> Mixing configuration from annotations and XML is not possible
in any
>> >>>>> way I
>> >>>>> guess. Ok, but is there any way how to reuse my annotations,
to get
>> the
>> >>>>> same
>> >>>>> behaviour as reusing ResultMap mapping in different statements
of
>> >>>>> XML
>> >>>>> configuration?!
>> >>>>>
>> >>>>> *  4) automatic SQL implementation*
>> >>>>>       I didn't find any piece of this functionality. May I take
it,
>> >>>>> that
>> >>>>> this was completely discarded?
>> >>>>>
>> >>>>> *  5) annotations and dynamic SQL*
>> >>>>>       Finally I didn't find any clue how to use dynamic SQL
in
>> >>>>> annotations. Does that mean that @SelectProviders are the only
way
>> how
>> >>>>> to
>> >>>>> make dynamic queries by the Java code?
>> >>>>>
>> >>>>>    Thanks for your time and answers I can use in my presentation
if
>> >>>>> anyone asks. Please, don't be offended by my questions, generally
I
>> >>>>> think
>> >>>>> iBatis is a great DAO framework.
>> >>>>>
>> >>>>> Cheers Jan
>> >>>>>
>> >>>>> --
>> >>>>> --------------------------------------------------------------
>> >>>>> Ing. Jan Novotný
>> >>>>> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
>> >>>>> http://blog.novoj.net
>> >>>>> Myšlenky dne otce Fura
>> >>>>> --------------------------------------------------------------
>> >>>>>
>> >>>>
>> >>>>
>> >>>
>> >>>
>> >>> --
>> >>> --------------------------------------------------------------
>> >>> Ing. Jan Novotný
>> >>> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
>> >>> http://blog.novoj.net
>> >>> Myšlenky dne otce Fura
>> >>> --------------------------------------------------------------
>> >>>
>> >>
>> >>
>> >>
>> >
>> >
>> > --
>> > --------------------------------------------------------------
>> > Ing. Jan Novotný
>> > @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
>> > http://blog.novoj.net
>> > Myšlenky dne otce Fura
>> > --------------------------------------------------------------
>> >
>>
>> --
>> Sent from my mobile device
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
>> For additional commands, e-mail: user-java-help@ibatis.apache.org
>>
>>
>
>
> --
> --------------------------------------------------------------
> Ing. Jan Novotný
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> http://blog.novoj.net
> Myšlenky dne otce Fura
> --------------------------------------------------------------
>

--

Sent from my mobile device

---------------------------------------------------------------------
To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
For additional commands, e-mail: user-java-help@ibatis.apache.org




-- 
--------------------------------------------------------------
Ing. Jan Novotný
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
http://blog.novoj.net
Myšlenky dne otce Fura
--------------------------------------------------------------

 


Mime
View raw message