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.be...@gmail.com> > There will be a new release by then, probably this weekend. > > On 2010-02-19, Ing. Jan Novotný <novotn...@gmail.com> wrote: > > 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 > > -------------------------------------------------------------- > > > > -- > 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 --------------------------------------------------------------