Dans la majorité des cas, posséder des blob dans une entity ne pose pas de problème majeur.
Malheureusement, il existe des cas ou mapper ces champs peut induire une sérieuse perte de performance, spécialement lors de création de requêtes de recherche volumineuses.
Exemple de mapping d’un blog avec JPA2:
/** The documentimp. */
@Column(name="DOCUMENTIMP")
@Lob()
private byte[] documentimp;
Si vous exécuter une requête Critéria avec ce mapping, hibernate ramènera systématiquement le contenu du document ce qui n’est dans la majorité des cas pas nécessaire.
Il existe deux solutions pour contourner ce problème:
Détacher l’objet @lob dans une entity séparée et créer une relation @OneToOne avec un FetchType.LAZY. Cette solution fonctionne correctement mais nécessite de changer le mapping.
Une autre solution plus simple et efficace peut-être mise en place. Il suffit juste de créer une deuxième entité sans le champ blob mappé. Utilisé cette entité pour faire des recherches avec de grosses volumétries et n’utiliser l’autre entity (avec le @Lob) que dans le cas ou vous avez réellement besoin du blob.
Dans cet article nous allons voir comment aligner un texte à droite avec PdfBox.
Si vous êtes familiers au monde du développement, le terme DevOps ne doit pas vous être inconnu. Cependant, les pratiques liées aux DevOps n’étant pas sans failles, nous nous tournons de plus en plus vers la notion de Platform engineering. Mais à quoi ça sert ? Et comment le mettre en place ? C’est ce que nous allons voir dans cet article. Bonne lecture !
Comment réaliser des requêtes avec de telles fonctions dans la clause SELECT en Hibernate 4 ? C'est ce que nous vous proposons de voir dans cet article.