MySQL

Rest sur Tomcat, Leçon 3 : Persistance avec OpenJPA

18 août 2013 14:27 root Java, MySQL, OpenJPA, Resteasy, Tomcat

Bonjour.

Dans le précédent article, les messages posté était enregistrer dans une simple List. Aujourd'hui on va voir comment enregistrer ces messages dans une base de donnée MySQL à l'aide d'OpenJPA.

Ajout d'OpenJPA au pom.xml

J'ai vraiment horreur de maven, mais bon. Commençons donc par ajouté OpenJPA et un connecteur Jdbc au projet.

<dependency>
  <groupId>org.apache.openjpa</groupId>
  <artifactId>openjpa-all</artifactId>
  <version>2.2.2</version>
  <scope>runtime</scope>
</dependency>
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.25</version>
  <scope>runtime</scope>
</dependency>

Création du fichier persistance.xml

à placer dans /src/main/webapp/WEB-INF/classes/META-INF. Ce fichier permet de définir à la fois la connexion à la base de donnée, mais également la liste des beans accessible par OpenJPA. Ici la configuration est faite de manière à ce que les table soit généré automatiquement.

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
  <persistence-unit name="tuto-bdd" transaction-type="RESOURCE_LOCAL">
    <class>bean.Message</class>
    <properties>
      <property name="openjpa.ConnectionURL"
value="jdbc:mysql://localhost:3306/YOUR_BDD?autoReconnect=true" />
      <property name="openjpa.ConnectionUserName" value="YOUR_LOGIN" />
      <property name="openjpa.ConnectionPassword" value="YOUR_PASS" />
      <property name="openjpa.ConnectionDriverName" value="org.gjt.mm.mysql.Driver" />
      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema" />
      <property name="openjpa.RuntimeUnenhancedClasses" value="supported" />
    </properties>
  </persistence-unit>
</persistence>

Décoration du bean

Maintenant il faut décorer notre précédent bean pour lui permettre d'être enregistrer en BDD. Rien de bien sorcier la non plus. On ajoute au passage un identifiant unique avec une valeur auto générée.

@Entity
public class Message {

    @Id
    @GeneratedValue
    private long id;

    [...]

    public long getId() {
        return id;
    }

}