samedi 19 janvier 2019

Java SE 13 : Les nouveautés -JEP 325: Switch Expressions

JEP 325: Switch Expressions


Afin d'éviter plusieurs "break ", qui rendent le code très verbeux, cette JEP propose de s'en passer, avec ce changement de syntaxe :

Le code :
switch (day) {
    case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);
    case TUESDAY                -> System.out.println(7);
    case THURSDAY, SATURDAY     -> System.out.println(8);
    case WEDNESDAY              -> System.out.println(9);
}
Remarque : 
  • On peut mettre plusieurs cas dans le même case séparer par une virgule (,)
  • Plus besoin de break
  • L'utilisation de  default. devient optionnel.
Remplacera :

switch (day) {
    case MONDAY:
    case FRIDAY:
    case SUNDAY:
        System.out.println(6);
        break;
    case TUESDAY:
        System.out.println(7);
        break;
    case THURSDAY:
    case SATURDAY:
        System.out.println(8);
        break;
    case WEDNESDAY:
        System.out.println(9);
        break;
}

vendredi 18 janvier 2019

JPA & Hibernate : equals et hashCode

L’égalité entre les objets est une notions importante lorsque'on utilise des ORM comme Hibernate et pas que pareil pour les TreeSet et TreeMap étant implémenté sous forme d'arbre binaire, il doit comparer les objets entre eux pour les organiser en implémentant comparable et/ou comparator .



Hibernate utilise la notion de proxy (Voir la définition sur Wikipedia) .
Quand nous avons deux objets en mémoire, nous devrons faire attention à ne pas comparer un proxy avec l’objet qu’il proxyfie.

Pour comparer sémantiquement deux instances, la classe java.lang.Object est pourvue de la méthode equals que toute classe est libre de redéfinir en respectant les règles suivantes :

  • l'implémentation doit être réflexive, symétrique, transitive et cohérente, il est généralement nécessaire de redéfinir hashCode lorsque equals est implémentée.
  •  les objets égaux doivent avoir des codes de hachage égaux