JPA type-conversie

Hibernate biedt de mogelijkheid om een type-conversie te doen tussen database kolom-typen en de persistent object veld-typen m.b.v. UserTypes.

In JPA werkt de typeconversie anders.
JPA biedt twee annotaties die hierbij kunnen helpen, te weten @PrePersist en @PostLoad.

Deze annotaties worden respectievelijk voor het persisteren en na het ophalen van de entiteit uitgevoerd. Door deze annotaties te gebruiken wordt het mogelijk om bijvoorbeeld een database veld met type Integer naar de buitenwereld als String beschikbaar te stellen.

Een voorbeeld:

@Entity
@Table()
public class Voorbeeld {
@Id
private int id;

@Column
private Integer Bsn_internal;

private String Bsn;

public String getId() { return id; }
public String getBsn() { return Bsn; }
public void setBsn(final String argBsn) { this.Bsn = argBsn; }

@PrePersist
private void prepersist() {
this.Bsn_internal = Integer.parseInt(this.Bsn);
}

@PostLoad
private void postLoad() {
this.Bsn = this.Bsn_internal.toString();
}
}

In bovenstaand voorbeeld is te zien dat er een interne vorm van de kolominhoud wordt vastgehouden (Bsn_internal). Deze waarde wordt nooit aan de buitenwereld gegeven.
De interface om het Bsn te bewerken en opvragen is via de getter/setter van Bsn.

De prepersist method zorgt ervoor dat de aangepaste Bsn waarde wordt overgezet naar Bsn_internal voordat de entiteit ge-persist wordt. De postload zorgt ervoor dat bij een update van de entiteit automagisch de Bsn wordt bijgewerkt.

Dit voorbeeld houdt geen rekening met mogelijke problemen bij het parsen van de Integer. De ontwikkelaar dient ervoor te zorgen dat foutafhandeling wordt verzorgt.

Comments are closed.

  • 071 - 82 000 82
  • Rijndijk 137 | 2394 AG Hazerswoude-Rijndijk
DEMO
Oracle Specialized
Java
GlassFish
WSO2
i-bridge
Rabobank
Greencat
Reuma Revalidatie Rotterdam
Robeco
VU Medisch Centrum
CHS
LUMC
TomTom
TKP
NCCW
Erasmus MC
UMCG
VIR
ANWB
BVA Auctions
D-Reizen
STEDIN