i would much prefer the sql types for the 2nd level cache, and not make the 2nd level cache even an instance of ObjectCache, but give it its own interface (or accept any JCache style interface, which is basically a map).

-brian

On Mar 14, 2005, at 4:11 PM, Jakob Braeuchi wrote:

hi armin,

i must admit that i did not like the idea of using sqlType at the first look... because we mix caching functionality with sql stuff.
but after a little debugging (just trying to understand the code) i think it may be the easiest way to go, simply because we now all possible field types.
another approach could be to demand the mutable field-types have to be serializable, this is imo not a big restriction.
jakob


Armin Waibel schrieb:

Hi all,

today I checked in some changes and a new interface ...metadata.FieldType which help to copy and compare field values of persistent objects. This is used in ObjectCacheTwoLevelImpl to copy persistent objects and it's used in odmg.ObjectEnvelope to take an image of a locked object.

The basic problem is how can we make an image or a copy of a persistent object, how to copy the object fields?

On OJB java-field-type level a field (of a persistent class) could be all kind of class, because the user can declare a field-conversion in the field-descriptor, thus we don't know the field type in the persistent object.
So it's not possible to image/copy field values on this level, because the fields don't have to implement Serializeable or Cloneable.


If we convert the fields to the sql-field-type using the javaToSql field-conversion we know the type of the field (performance issue when using complex field-conversions?), because this is declared in the field-descriptor and we are using the jdbc type / java type mapping of the JDBC specification:
VARCHAR --> String
VARBINARY --> byte[]
DATE --> Date
...
Now we know the type of the field. All possible types, FieldType implementation classes, are defined in the new class metadata.FieldTypeClasses as static inner classes.
We differ two base types:
- Immutable, like String, Integer, Long,...
- Mutable, like Date, Timestamp, byte[],...
To copy immutable types is easy, use the field value itself. Problematic are mutable types (copy values, compare values) and mutable types that behave like immutable types, because we can't handle them (like Blob, Clob, Struct,...).
How should we handle these "exotic" types?



regards, Armin

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to