Cet article décrit étape par étape le processus de création d’entités JPA à partir d’une base de données MySQL existante, avec l’IDE Eclipse Indigo 3.7.
-
Télécharger la version “Eclipse IDE for Java EE Developers” d’Eclipse Indigo 3.7
-
Télécharger le driver JDBC MySQL mysql-connector-java-5.1.20.jar
-
Créer un nouveau projet JPA
-
Taper le nom du projet puis cliquer sur Next
-
Cliquer sur l’icône “Download library…”
-
Cliquer sur “EclipseLink 2.3.2 – Indigo” puis cliquer sur Next
-
Cliquer sur “Add connection…”
-
Cliquer sur MySQL puis sur Next
-
Cliquer sur MySQL JDBC Driver 5.1
-
Cliquer sur l’onglet JAR List, sélectionner mysql-connector-java-5.1.0-bin.jar et cliquer sur Remove JAR/Zip
-
Cliquer sur Add JAR/Zip… et sélectionner le driver JDBC mysql-connector-java-5.1.20.jar téléchargé à l’étape 2)
-
Cliquer sur l’onglet Properties, taper les paramètres de connexion à la base de données, et cliquer sur OK
-
Cliquer sur OK
-
Cliquer sur Test Connection. Le message “Ping succeeded!” doit apparaître
-
Cliquer sur Finish
-
Créer des nouvelles entités JPA à partir des tables
-
Cocher les noms des tables dont on veut générer les entités correspondantes
-
Saisir le nom du package dans lequel seront générées les entités, cocher java.util.List, puis cliquer sur Finish. C’est terminé !
Avantages :
- Possibilité de choisir pour chaque champ le type de la variable (Long à la place de long par exemple)
- Possibilité de choisir comment sont générées les clés primaires
Inconvénients :
- Pas de génération automatique des méthodes equals(), hashCode() et toString()
- Pas de génération automatique des Named Queries
- Pas de génération automatique de différents constructeurs
Après avoir vu comment implémenter le design pattern Post/Redirect/Get avec des servlets, voici comment faire avec le framework Struts2 :
Environnement de développement :
jdk1.7
Eclipse Indigo
Tomcat 7.0.12
Tout d’abord, l’action Struts2 redirigeant vers la page index.jsp :
import com.opensymphony.xwork2.ActionSupport;
public class IndexAction extends ActionSupport {
private boolean confirm;
public String execute() throws Exception {
return SUCCESS;
}
public boolean isConfirm() {
return confirm;
}
public void setConfirm(boolean confirm) {
this.confirm = confirm;
}
}
Ensuite, la JSP index.jsp contenant un formulaire avec un bouton submit :
<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<html>
<body>
<s:if test="confirm" >
L'article a bien été ajouté au panier.
</s:if>
<s:else>
Cliquer pour ajouter l'article au panier.
</s:else>
<s:form action="prgAction">
<s:submit />
</s:form>
</body>
</html>
Ensuite, l’action Struts2 vers laquelle le formulaire est posté, qui effectue la redirection 302 vers une autre action Struts2. Contrairement au code utilisant des servlets, Struts2 ne permet pas de définir le code HTTP 303 pour la redirection.
import com.opensymphony.xwork2.ActionSupport;
public class PRGAction extends ActionSupport {
public String execute() throws Exception {
return "redirect";
}
}
Enfin, le fichier de configuration struts.xml :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="myPackage" extends="struts-default">
<action name="index" class="IndexAction">
<result>/jsp/index.jsp</result>
</action>
<action name="prgAction" class="PRGAction">
<result name="redirect" type="redirectAction">
<param name="actionName">index</param>
<param name="confirm">true</param>
</result>
</action>
</package>
</struts>