2016-12-09 1 views
1

Cette question concerne la pratique de conception d'applications. Je pense à résoudre la situation avec pojo et les champs qui existent dans l'application existent dans plus de types de données.Comment un moment pour résoudre la conversion de type de données de champ chaîne/date dans pojo?

Dans mon POJO il y a un champ Date. Lors de la création de cette POJO à la main que je mets Date, quand je parse de XML que je dois faire face à la représentation String et quand fais persistant avec JPA il devrait être Timestamp.

ce qui est dans la pratique générale dans ces situations? Est-ce que ce pojo a ce champ dans deux représentations de type de données (String et Date) ou seulement dans un Date général et pendant l'analyse de chaîne le convertissent en Date de String?

Question 2: comment convertir cette valeur de String en Date - comme méthode statique dans la classe pojo? Sur place dans une classe d'utilitaire externe.

Edit # 1: J'utilise Builder pour ces motifs POJO s.

+0

D'accord, c'est une bonne question. Pour être plus difficile: Java 8 nouveau package de date et heure mieux conçu n'est pas compatible avec JPA. Jodatime est un gagnant? –

Répondre

1

J'aime quand mes classes de domaine ont une représentation riche Date - DateTime (Joda). Joda fournit des tonnes de méthodes qui vous permettent de manipuler la date donc c'est à mon avis le meilleur choix. Quand je dois écrire la date dans le xml ou dans la base de données, je les convertis.

Vous utilisez un modèle Builder afin que vous puissiez fournir des méthodes multiples qui fixent la date. Par exemple:

private DateTime createdOn; 
... 
public Builder createdOn(final DateTime createdOn) { 
    this.createdOn = createdOn; 
    return this; 
} 

public Builder createdOn(final String createdOn) { 
    this.createdOn = DateTime.parse(createdOn, dateTimeFormatter); 
    return this; 
} 

public Builder createdOn(final Date createdOn) { 
    this.createdOn = new DateTime(createdOn); 
    return this; 
} 

Conversion entre la chaîne et la date est juste un simple appel, donc je ne pense pas qu'il doit être classe utilitaire séparé. L'autre chose est le formatage. Il doit savoir dans quel format la date a été écrite dans String. Vous utiliseriez probablement le même format dans 95% des cas, donc je voudrais extraire le formateur.

+0

Ouais, ça me semble bon! :) – Artegon