ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From charlie bird <zebthe...@yahoo.co.uk>
Subject RE: iBatis annotation related questions
Date Fri, 19 Feb 2010 16:51:55 GMT
Had to port database last year but all the sql was in xml and that made it easy.
It was also done within Spring so swapping the DAO implementations over was a piece of cake.
Meant we could back out just as easily as well (not that we has too).
To echo Clinton:
Stick with XML

--- On Fri, 19/2/10, Jose Lora <Jose.Lora@meredith.com> wrote:

> From: Jose Lora <Jose.Lora@meredith.com>
> Subject: RE: iBatis annotation related questions
> To: user-java@ibatis.apache.org
> Date: Friday, 19 February, 2010, 15:34
> 
> 
> 
>  
>  
> 
> 
> 
> 
> 
> 
>  
> 
> 
> 
> 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
> 
> --------------------------------------------------------------
> 
> 
> 
> 
> 
> 
> 
> 
>    
> 
> 
> 
>  
> 
> 
> 


      


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


Mime
View raw message