3rd March. 2010/2/19 Clinton Begin <clinton.be...@gmail.com>
> When is your workshop? > > On 2010-02-18, Ing. Jan Novotný <novotn...@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.ma...@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.ma...@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ý <novotn...@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.be...@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ý <novotn...@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-unsubscr...@ibatis.apache.org > For additional commands, e-mail: user-java-h...@ibatis.apache.org > > -- -------------------------------------------------------------- Ing. Jan Novotný @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ http://blog.novoj.net Myšlenky dne otce Fura --------------------------------------------------------------