On Jun 24, 2011, at 02:32, Steve Ebersole wrote: > Here is one of the tests I pointed you to before: > https://github.com/hibernate/hibernate-core/blob/master/hibernate-core/src/test/java/org/hibernate/metamodel/binding/SimpleValueBindingTests.java > > It shows the basic steps. Pretty similar to what you had.
yeah, so this looks fine/great. i'm failing to see what changed beyond a more unified api ? /max > > On 06/23/2011 02:18 PM, Max Rydahl Andersen wrote: >> sorry i'm a bit slow here but could someone show (pseudo) code for how the >> new approach would look like versus before? >> >> Here is what I remember being used to (approximately from memory): >> >> PersistentClass pc = new PersistentClass(); >> pc.setEntityName("org.model.Customer"); >> pc.setTable(new Table("CUSTOMER")) >> >> Property p = new Property("name"); >> >> Value v = new SimpleValue(); >> v.setColumn("NAM"); >> >> p.setValue(v); >> >> pc.addProperty(p); >> >> What's the new approach for something like that? >> >> /max >> >> On Jun 23, 2011, at 20:45, Gail Badner wrote: >> >>> 1) is very much how I envisioned the state objects to be used (e.g., data >>> processed from a particular source that initializes an implementation of a >>> common "state" interface). >>> >>> I like what you proposed for 2), however I would like to see bindings that >>> are immutable, at least after being built. I really dislike having setters >>> available when the session factory is being built. >>> >>> In addition, I'd like to suggest that state APIs be defined and bound >>> according to use case. From what I have seen, is not very difficult to >>> determine the use case given the data. IMO, dealing with one use case at a >>> time would make the processing code straightforward and easier to maintain. >>> >>> As an example, I've listed the different types of composite IDs in >>> http://opensource.atlassian.com/projects/hibernate/browse/HHH-6234 . The >>> old HbmBinder code attempts to have different types of composite IDs fit >>> the same mold, which makes the source code very difficult to maintain >>> without breaking something. IMO, composite IDs could be very much >>> simplified if taken one use case at a time. >>> >>> ----- Original Message ----- >>> From: "Steve Ebersole"<st...@hibernate.org> >>> To: hibernate-dev@lists.jboss.org >>> Sent: Wednesday, June 22, 2011 3:16:36 PM >>> Subject: [hibernate-dev] metamodel thoughts >>> >>> Wanted to get my thoughts on the current state of the metamodel down so >>> we could all discuss. >>> >>> First to define some vocab for discussing. I say that the old code >>> (Configuration, HBMBinder/AnnotationBinder, mapping package) used a >>> "push" model. The binders interpreted the various user supplied values >>> and made decisions *pushing* the results of those decisions to the >>> mapping classes. The new code attempts a "pull" approach. The user >>> values are interpreted into BindingState and RelationalState objects >>> which get passed in to the Binding objects which *pull* the data from >>> the states. >>> >>> At the most basic of descriptions, what is it we are trying to >>> accomplish here? Well we have some mapping information supplied by the >>> user in a number of forms (hbm, annotations, etc) and need to correctly >>> build/populate a binding model based on the values and interpretations >>> of those values. >>> >>> In designing I always go back to the question of "how would I accomplish >>> this task by hand". Here, the first thing I see is that we have user >>> values in multiple formats. So the very first thing I would do, >>> ideally, is to some how normalize values from those different "sources". >>> I would then take those normalized values and then populate the >>> binding model. >>> >>> So here is what I suggest: >>> 1) What we currently call "state" objects would serve the role of this >>> normalization. We would have specific things to normalize hbm, >>> annotations, etc. It could even be just different implementations of >>> the same normalized interface which are constructed with whatever they >>> need to answer the contract queries. >>> 2) These normalized value objects are then passed into THE binder which >>> uses the information there to build and populate the bindings. 2 things >>> to note here. First I said THE binder. The idea is that there is just >>> one for both annotations and hbm as the differences were removed during >>> normalization. Second this part is a push approach. Specifically that >>> means the bindings and models are mutable. >>> >>> In my mind this sits between push and pull (or does each) >>> >>> -- >>> Steve Ebersole<st...@hibernate.org> >>> http://hibernate.org >>> _______________________________________________ >>> hibernate-dev mailing list >>> hibernate-dev@lists.jboss.org >>> https://lists.jboss.org/mailman/listinfo/hibernate-dev >>> _______________________________________________ >>> hibernate-dev mailing list >>> hibernate-dev@lists.jboss.org >>> https://lists.jboss.org/mailman/listinfo/hibernate-dev >> >> /max >> http://about.me/maxandersen >> >> >> > > -- > Steve Ebersole <st...@hibernate.org> > http://hibernate.org /max http://about.me/maxandersen _______________________________________________ hibernate-dev mailing list hibernate-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/hibernate-dev