Création d’une application de type CRUD avec JSF et JPA

Extrait du synopsis :

Cet article a pour objectif de vous présenter la tâche de création d’une application complète de type CRUD ( Create, Read, Update, Delete ) permettant d’effectuer les opérations de création, consultation, suppression et modification d’une entité et ce en utilisant le framework web JSF et le framework de persistance JPA .

L’article complet est par ici : Création d’une application de type CRUD avec JSF et JPA

Application exemple (JPA managé par Spring)

Suite à ce billet que j’ai rédigé pour montrer comment mettre en place JPA/Hibernate en mode managé avec Spring, on m’a à maintes reprises demandé de fournir une application exemple pour montrer en pratique ces concepts.

Read more of this post

[Java] Sortie de l’Early Draft de JPA 2.0

L’Expert Group de la JSR 317 vient enfin de sortir un Early Draft pour le futur JPA 2.0.

Voici quelques unes des nouveautés que JPA 2.0 apporterait:

[Suite:]

  • Ajout d’une annotation @Access qui permet de spécifier le type d’accès aux proriétés d’une entité: @Access(FIELD) pour spécifier un accès direct aux champs et @Access(PROPERTY) pour spécifier que l’accès doit se faire via le getter et le setter.
  • Support en natif des collections de type primitifs, un peu à la manière de @CollectionOfElements d’Hibernate via @ElmenetCollection. A noter que les types Embeddable sont supportés eux aussi.
  • Un support plus évolué et flexible pour les clés primaires composés, les clés étrangères composés, etc.
  • Un support plus évolué pour les Maps. Les clés et les valeurs d’une Map peuvent dorénavant être de n’importe quelle combinaison (Entity, Embeddable, type primitif).
  • Gestion plus sophistiqué de la concurrence et du locking
  • API pour controler le cache du second niveau
  • Extension de JPA-QL. Apparmment, les détails seront précisés dans un futur Draft.

Bon, ce n’est qu’un survol très rapide des nouveautés. C’est en partie dû au fait que je me suis basé sur le document officiel de l’Early Draft, qui présente les specs de JPA 2.0 sans indiquer précisément/systématiquement ce qui a changé par apport à JPA 1.0.

—-

Mise en place de JPA managé par Spring

Spring Bonjour,
L’utilisation de JPA dans un environnement non managé peut se revéler délicate et problématique (la fameuse LazyInitException en est un exemple).

Ca vient surtout de la gestion de la session de persistence, qui dans le mode non-managé doit être gérée à la main par le développeur, or la méthode la plus simple qui consiste à ouvrir une session de persistence chaque fois qu’on en a besoin est pour lemoins inefficace, lourde, et ne marche pas avec le chargement lazy, ne permet pas une gestion correcte des transactions (étalées sur plusieurs actions), etc.

C’est pour cela qu’il vaut mieux (faut) utiliser un conteneur pour la gestion de la session de persistence (JPA, Hibernate, etc.) comme par exemple Spring.

Je vais présenter rapidement dans ce billet les étapes à suivre pour configurer Spring 2.5 et JPA dans le cadre d’une application Web (ne nécessite pas un serveur d’application, marche sur Tomcat et Jetty).

Read more of this post