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 > -------------------------------------------------------------- >