After spending the previous chapter almost exclusively on entities and their class- and identity-mapping options, we’ll now focus on value types in their various forms. Value types are frequently encountered in classes under development. We’ll separate value types into two categories: basic value-typed classes that come with the JDK, such as String
, Date
, primitives, and their wrappers; and developer-defined value-type classes, such as Address
and MonetaryAmount
in CaveatEmptor.
In this chapter, we’ll first map persistent properties with JDK types and discuss the basic mapping annotations. We’ll look at how you can work with various aspects of properties: overriding defaults, customizing access, and generated values. We’ll also see how SQL is used with derived properties and transformed column values. We’ll work with basic properties, temporal properties, and mapping enumerations.