cayenne-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrus Adamchik <and...@objectstyle.org>
Subject Java type should be a property of DbEntity, not ObjEntity
Date Sun, 22 Jul 2012 10:20:55 GMT
I am thinking of redefining one of the mapping assumptions that was in Cayenne since day one.
In 3.2 I want to move attribute java type from ObjAttribute to DbAttribute. The goal of this
change is to improve consistency of the runtime model. Current separation of Java and DB attribute
types causes a whole class of bugs and a whole class of hacks in the framework.

E.g.:

1. Unrecognized non-standard type mapping. This one is discussed at the moment on the user
list [1]. I suspect it has nothing to do with "custom" types, but rather with non-JDBC default
mapping of DB data to Java, regardless of the Java type.

2. Hacks to recognize non-standard type mapping. When creating a DataRow, Cayenne would try
to guess which ObjEntities might use this DataRow, and populate DataRows with values corresponding
to the ObjAttribute type definitions. This clearly breaks layer separation - lower layers
have to know too much about the higher layers of the stack. Besides it doesn't always work
anyways - see #3.

3. Extra mapping "flexibility" that doesn't really work. We had past Jiras when the same column
is mapped to different Java types in 2 different subclasses, creating a mess in subclass-agnostic
DataRows.

This is not a full list of problems, but gives you some idea. I am hoping the suggested change
would tie things up and leave no space for ambiguities.

Comments?

Andrus

[1] http://markmail.org/message/6bs2suislyfp3apk
Mime
View raw message