Question

@Entity
public class Person {
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long id;

    private int salary;

    @Version
    private long version;

    // ...getters and setters
}
  1. Est-il nécessaire de créer setter / getter pour version?
  2. Lorsque la persistance de cette entité avec Hibernate, je ne ai pas besoin de configurer manuellement cette valeur, non?
  3. Que dois-je configurer pour utiliser le contrôle avec accès concurrentiel optimiste de hibernateTemplate.saveOrUpdate de printemps? Sont toutes les bases de données prises en charge?
  4. Comment test d'unité cette entité? Dans ma base de données tous mes enregistrements montrant champ version ont une valeur de 0
  5. Est-ce que l'appel hibernateTemplate.saveOrUpdate incrémenter la valeur de version à chaque fois?
Était-ce utile?

La solution

Je dirais:

  1. set / get version est nécessaire, comme vous pouvez affecter la version vous parfois (lors de la recréation d'une nouvelle instance de données anciennes)
  2. Vous n'avez pas besoin si vous lisez l'instance de la base de données. (Lors de la création dans votre code avec le nouveau, ce serait une autre histoire).
  3. Je ne vois rien d'autre. Je ne ai jamais eu un problème avec une base de données.
  4. test de l'unité ne vont pas la base de données à mon avis, si les tests impliquant la base de données sont appelés tests d'intégration. Vous ne devriez pas avoir trop d'entre eux, comme ils sont lents, et ils ne testent pas vraiment votre code, mais plus les codes Hibernate / Driver / Base de données ... Vous devriez leur faire confiance, ou tout simplement de les tester une fois, mais pas pour toutes vos entités.
    Pour voir les valeurs de version plus de 0, lire / modifier / mettre à jour votre entité dans une transaction, l'augmentation de la version par un. Sortez de la transaction, faites-le à nouveau, la valeur augmente ...
  5. La version augmente chaque fois que la ligne de base de données est modifiée.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top