Die neue Version Java Persistence 2.1 bietet einige kleine aber feine Neuerungen, von denen ich hier zunächst mal eine kurz vorstellen möchte: Converter.
Bis JPA 2.0 musste man sich i. W. mit dem Mapping zwischen Java-Attributen und Datenbank-Spalten zufrieden geben, das auf recht niedriger Ebene, nämlich im JDBC-Standard, definiert wird. Mit den in der Version 2.1 eingeführten Konvertern kann man das Mapping nun sehr flexibel beeinflussen.
Dazu wird eine Konverterklasse benötigt, die mit ihren beiden Methoden für die Umwandlung eines Java-Atributs in einen Spaltenwert und umgekehrt sorgt. Sie muss mit @Converter annotiert sein und das Interface AttributeConverter<X,Y> implementieren. Dabei ist X der Attribut-Typ und Y der Typ des Datenbankfeldes. Das zu konvertierende Attribut wird mit @Convert annotiert und die Converter Class als Parameter angegeben:
@Converter
public class YesNoConverter
implements AttributeConverter<Boolean, String>
{
public String convertToDatabaseColumn(Boolean fieldValue) { … }
public Boolean convertToEntityAttribute(String columnValue) { … }
}@Entity
public class Country
{
…
@Convert(converter = YesNoConverter.class)
private boolean expired;
Die Converter Class kann als Standard-Konverter registriert werden, indem der Annotation @Converter der Parameter autoApply=true mitgegeben wird. Ein solcher Konverter ist automatisch für alle Attribute passenden Typs aktiv.
Mehr zu Java EE in unseren Seminaren (s. http://javaeeblog.wordpress.com/2013/02/26/aktuelle-javaseminare-1-halbjahr-2013/)