JPOX
JPOX
 JPOX Version 1.0
Configuration | Tutorials | Worked Examples | Developer
Obtaining JPOX
JPOX Preparation
JPOX Runtime
JDO Types

JDO uses terminology First-Class object (FCO) and Second-Class object (SCO) to categorize how types are treated by JDO. Lets just explain what these mean.

FCO's are objects that have an identity in the datastore. They can be referred to. Examples of FCO's are an instance of a user-supplied class.

SCO's are objects that do not have an identity in the datastore. They can't be referred to directly. They are aggregated to an FCO object and can be stored as part of the FCO object. SCO object can also contain FCO elements, like an FCO object has a SCO field of type Collection which contains FCO objects elements. Examples of SCO's are a field of type Date, that is typically stored as part of the FCO object.

JDO Requirements

The JDO (v1.0.1) specification (section 6.4) requires that an implementation support the following for FCO or SCO

  • Primitive types : boolean, byte, short, int, long, char, float, double
  • Immutable Object types : Boolean, Character, Byte, Short, Integer, Long, Float, Double, String
  • Immutable Object types : Locale, BigDecimal, BigInteger
  • FCO's : PersistenceCapable
  • FCO's : Object
  • FCO's : interfaces
  • SCO's or FCO's : Collection, Set, HashSet
  • SCO's or FCO's : java.util.Date
The following are also optional
  • SCO's or FCO's : Map, List, ArrayList, HashMap, Hashtable, LinkedList, TreeMap, TreeSet, Vector
  • SCO's : PersistenceCapable
  • FCO's or SCO's : arrays

JPOX Supported Types
First-Class (FCO) Types

JPOX currently supports objects that are PersistenceCapable as FCO (this includes implementations of interfaces).

Second-Class (SCO) Types

The table below shows the currently supported SCO in JPOX (along with their JDBC type, mutability and default-fetch-group setting).

Java TypeSCO MappingJDBC TypeMutableSCO Mutable wrapper classDefault Fetch GroupVersion Added
booleanorg.jpox.store.mapping.BooleanMappingBIT, CHAR ('Y','N')NoYes1.0.0-beta-1
byteorg.jpox.store.mapping.ByteMappingTINYINT, SMALLINT, INTEGER, DECIMALNoYes1.0.0-beta-1
charorg.jpox.store.mapping.CharacterMappingINTEGERNoYes1.0.0-beta-1
shortorg.jpox.store.mapping.ShortMappingSMALLINT, DECIMALNoYes1.0.0-beta-1
intorg.jpox.store.mapping.IntegerMappingINTEGER, DECIMALNoYes1.0.0-beta-1
longorg.jpox.store.mapping.LongMappingBIGINT, DECIMALNoYes1.0.0-beta-1
floatorg.jpox.store.mapping.FloatMappingREAL, FLOATNoYes1.0.0-beta-1
doubleorg.jpox.store.mapping.DoubleMappingDOUBLE, FLOATNoYes1.0.0-beta-1
java.lang.Booleanorg.jpox.store.mapping.BooleanMappingBIT, CHAR('Y','N')NoYes1.0.0-beta-1
java.lang.Byteorg.jpox.store.mapping.ByteMappingTINYINT, SMALLINT, INTEGER, DECIMALNoYes1.0.0-beta-1
java.lang.Characterorg.jpox.store.mapping.CharacterMappingINTEGERNoYes1.0.0-beta-1
java.lang.Shortorg.jpox.store.mapping.ShortMappingSMALLINT, DECIMALNoYes1.0.0-beta-1
java.lang.Integerorg.jpox.store.mapping.IntegerMappingINTEGER, DECIMALNoYes1.0.0-beta-1
java.lang.Longorg.jpox.store.mapping.LongMappingBIGINT, DECIMALNoYes1.0.0-beta-1
java.lang.Floatorg.jpox.store.mapping.FloatMappingREAL, FLOATNoYes1.0.0-beta-1
java.lang.Doubleorg.jpox.store.mapping.DoubleMappingDOUBLE, FLOATNoYes1.0.0-beta-1
java.lang.NumberNoYes1.0.0-beta-1
java.lang.Stringorg.jpox.store.mapping.StringMappingCHAR, VARCHAR, LONGVARCHARNoYes1.0.0-beta-1
java.math.BigDecimalorg.jpox.store.mapping.BigDecimalMappingNUMERIC, DECIMALNoYes1.0.0-beta-1
java.math.BigIntegerorg.jpox.store.mapping.BigIntegerMappingNUMERIC, DECIMALNoYes1.0.0-beta-1
java.util.Localeorg.jpox.store.mapping.LocaleMappingVARCHARNoYes1.0.0-beta-1
java.util.TimeZoneorg.jpox.store.mapping.TimeZoneMappingVARCHARNoNo1.0.0-beta-2
java.util.Dateorg.jpox.store.mapping.DateMappingTIMESTAMP, CHAR, OTHERYesorg.jpox.sco.DateYes1.0.0-beta-1
java.sql.Dateorg.jpox.store.mapping.SqlDateMappingDATE, CHARYesorg.jpox.sco.SqlDateNo1.0.0-beta-1
java.sql.Timeorg.jpox.store.mapping.SqlTimeMappingTIME, CHARYesorg.jpox.sco.SqlTimeNo1.0.0-beta-2
java.sql.Timestamporg.jpox.store.mapping.SqlTimestampMappingTIMESTAMP, CHAR, OTHERYesorg.jpox.sco.SqlTimestampNo1.0.0-beta-1
java.util.ArrayListorg.jpox.store.mapping.ArrayListMappingYesorg.jpox.sco.ArrayListNo1.0.0-beta-2
java.util.Collectionorg.jpox.store.mapping.CollectionMappingYesorg.jpox.sco.CollectionNo1.0.0-beta-1
java.util.HashMaporg.jpox.store.mapping.HashMapMappingYesorg.jpox.sco.HashMapNo1.0.0-beta-2
java.util.HashSetorg.jpox.store.mapping.HashSetMappingYesorg.jpox.sco.HashSetNo1.0.0-beta-1
java.util.Hashtableorg.jpox.store.mapping.HashtableMappingYesorg.jpox.sco.HashtableNo1.0.0-beta-2
java.util.LinkedListorg.jpox.store.mapping.LinkedListMappingYesorg.jpox.sco.LinkedListNo1.0.0-beta-2
java.util.Listorg.jpox.store.mapping.ListMappingYesorg.jpox.sco.ListNo1.0.0-beta-1
java.util.Maporg.jpox.store.mapping.MapMappingYesorg.jpox.sco.MapNo1.0.0-beta-1
java.util.Setorg.jpox.store.mapping.SetMappingYesorg.jpox.sco.SetNo1.0.0-beta-1
java.util.Stackorg.jpox.store.mapping.StackMappingYesorg.jpox.sco.StackNo1.0.0-beta-2
java.util.TreeMap
java.util.TreeSet
java.util.Vectororg.jpox.store.mapping.VectorMappingYesorg.jpox.sco.VectorNo1.0.0-beta-2
java.lang.Objectorg.jpox.store.mapping.PersistenceCapableMappingBLOB, LONGVARBINARYYes1.0.0-beta-1
"Simple" Interfacesorg.jpox.store.mapping.InterfaceMappingYes1.0.0-beta-2
byte[]org.jpox.store.mapping.ByteArrayMappingBINARY, LONGVARBINARY, BLOBNoNo1.0.0-beta-3