JPA (API de persistance Java) dans Eclipse

introduction

Créons un exemple de programme JPA avec Eclipse. Modifiez le programme MVC et utilisez JPA pour obtenir les données de la base de données SQL Postgre. Créez une table Emplyee à l'avance. (Voir: Installer Postgre SQL)

Environnement de développement

Windows 10 Pro 1709(16299.192) Eclipse pleiades-4.7.3 java 1.8.0_162 PostgreSQL 10.4 Released!

procédure

    1. Télécharger le pilote JDBC PostgreSQL
  1. Copier dans WEB-INF \ lib du projet

    1. Créer une connexion à Postgres SQL
  2. Convertir en projet JPA

  3. Modifications du code source

  4. Contrôle de fonctionnement

1. 1. Télécharger le pilote JDBC PostgreSQL

URL

https://jdbc.postgresql.org/download.html

1. Cliquez sur "Pilote PostgreSQL JDBC 4.2, 42.2.2"

image.png

2. Copier dans WEB-INF \ lib du projet

image.png

3. 3. Créer une connexion à Postgres SQL

1. Sélectionnez "Fenêtre" -> "Vue Vue" -> Menu "Autre"

image.png

2. Sélectionnez «Data Management» «Data Source Explorer» et cliquez sur «Open»

image.png

3. Cliquez sur "Nouveau" dans le menu de droite sur "Connexion à la source de données"

image.png

4. Sélectionnez Postgres SQL et cliquez sur Suivant

image.png

5. Entrez "Base de données", "URL", "Nom d'utilisateur" et "Mot de passe" et cliquez sur "Tester la connexion".

6. Confirmez "Ping terminé avec succès" et cliquez sur le bouton "OK".

7. Cliquez sur le bouton "Terminer"

image.png

8. Vous pouvez voir la table créée dans Install Postgre SQL

image.png

4. Convertir en projet JPA

1. Sélectionnez Menu droit-> Configuration-> Convertir en projet JPA sur le projet

image.png

2. Cliquez sur "Suivant"

image.png

3. Sélectionnez "EclipseLink 2.5.2" et cliquez sur "Suivant"

image.png

4. Cochez "Accepter les termes de cette licence" et cliquez sur "Terminer"

image.png

5. Sélectionnez la connexion "New PostgreSQL", cochez "Build Path", "Override Default Catalog from Connection", "Override Default Schema from Connection", et cliquez sur "Finish".

image.png

6. Sélectionnez Menu droit-> Outils JPA-> Générer l'entité à partir de la table sur le projet

image.png

7. Vérifiez le tableau "employé" et cliquez sur "Terminer"

image.png

5. Modifications du code source

1. Ajoutez @NamedQuery de findById à l'entité Employee

Changer avant

@Entity
@NamedQuery(name="Employee.findAll", query="SELECT e FROM Employee e")
public class Employee implements Serializable {
Après le changement

@Entity
@NamedQueries({
	@NamedQuery(name="Employee.findAll", query="SELECT e FROM Employee e"),
	@NamedQuery(name = "Employee.findById", query = "SELECT e from Employee e where e.id = :id")
})
public class Employee implements Serializable {

2. Modifié pour obtenir EmployeeServlet de DB

Après le changement

package emp;

import java.io.IOException;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import model.Employee;


/**
 * Servlet implementation class EmployeeServlet
 */
@WebServlet(name = "EmpList", urlPatterns = { "/EmpList" })
public class EmployeeServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public EmployeeServlet() {
        super();
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		EntityManagerFactory emf = Persistence.createEntityManagerFactory("SampleMVC2");
		EntityManager entityManager = emf.createEntityManager();

        List<Employee> employeeList = entityManager
                .createNamedQuery("Employee.findAll", Employee.class)
                .getResultList();

        entityManager.close();
        emf.close();


	    //Passer les données du modèle à la vue
	    request.setAttribute("employeeList", employeeList);

	    //Afficher la vue
	    this.getServletContext()
	        .getRequestDispatcher("/employeeList.jsp")
	        .forward(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		EntityManagerFactory emf = Persistence.createEntityManagerFactory("SampleMVC2");
		EntityManager entityManager = emf.createEntityManager();

		List<Employee> employeeList;

		String id = request.getParameter("id");

		if (id.isEmpty()) {
	        employeeList = entityManager
	                .createNamedQuery("Employee.findAll", Employee.class)
	                .getResultList();
		}
		else {
	        employeeList = entityManager
	                .createNamedQuery("Employee.findById", Employee.class)
	                .setParameter("id", id)
	                .getResultList();
		}

        entityManager.close();
        emf.close();

        //Passer les données du modèle à la vue
		request.setAttribute("employeeList", employeeList);


		//Afficher la vue
	    this.getServletContext()
	        .getRequestDispatcher("/employeeList.jsp")
	        .forward(request, response);

	}

}

3. Menu de droite sur Employee Bean-> Sélectionnez "Supprimer"

image.png

4. Sélectionnez "OK"

image.png

5. Modifiez "persistence.xml"

Changer avant

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
	<persistence-unit name="SampleMVC">
		<class>model.Employee</class>
	</persistence-unit>
</persistence>
Après modification (informations de connexion à la base de données ajoutées)

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
	<persistence-unit name="SampleMVC2">
		<class>model.Employee</class>
		<properties>
			<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" /> <!-- DB Driver -->
			<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost/postgres" /> <!-- BD Mane -->
			<property name="javax.persistence.jdbc.user" value="postgres" /> <!-- DB User -->
			<property name="javax.persistence.jdbc.password" value="dev" /> <!-- DB Password -->
		</properties>
	</persistence-unit>
</persistence>

6. Contrôle de fonctionnement

[Reportez-vous à la vérification du fonctionnement de «MVC avec Eclipse».](Https://qiita.com/0ashina0/items/7c378823905949b301af#4-%E5%8B%95%E4%BD%9C%E7%A2%BA%E8% AA% 8D)

en conclusion

--L'annotation @PersistenceContext peut être ajoutée à EntityManager uniquement lorsque la gestion des transactions (gestion des conteneurs) est effectuée. Sinon, @PersistenceContext est ignoré.

Recommended Posts

JPA (API de persistance Java) dans Eclipse
[Java] Création d'API à l'aide de Jerjey (Jax-rs) avec eclipse
Programme Null-safe en Java (Eclipse)
Premier développement Java dans Eclipse
Essayez d'exécuter Selenuim 3.141.59 avec eclipse (java)
Hit l'API de Zaim (OAuth 1.0) en Java
Analyser l'analyse syntaxique de l'API COTOHA en Java
J'ai essayé d'utiliser l'API Elasticsearch en Java
Implémenter l'autorisation API Gateway Lambda dans Java Lambda
Étude de Java 8 (API de date dans le package java.time)
Essayez d'utiliser l'API Stream en Java
Appelez l'API de notification Windows en Java
Essayez d'utiliser l'API au format JSON en Java
[Java] Définir AdoptOpen JDK dans STS (Eclipse)
Construction de l'environnement Play Framework 2.6 (Java) avec Eclipse
Partition en Java
Janken à Java
API Java Stream
MVC dans Eclipse.
Taux circonférentiel à Java
FizzBuzz en Java
ChatWork4j pour l'utilisation de l'API ChatWork en Java
Techniques de lecture du code source Java dans Eclipse
Essayez d'utiliser l'API Cloud Vision de GCP en Java
Essayez d'utiliser l'analyse syntaxique de l'API COTOHA en Java
Lire JSON en Java
Implémentation de l'interpréteur par Java
Faites un blackjack avec Java
Essayé l'API Toot et Streaming de Mastodon en Java
Application Janken en Java
Programmation par contraintes en Java
Mettez java8 dans centos7
Procédure d'installation Java (eclipse)
Eclipse ~ Création de projet Java ~
NVL-ish guy en Java
Joindre des tableaux en Java
"Hello World" en Java
Emballez la réponse de l'API (java)
Interface appelable en Java
Appelez l'API Amazon Product Advertising 5.0 (PA-API v5) en Java
[Java] API / carte de flux
Fonctions Azure en Java
Dépannage de l'API Java Docker-Client
Simple htmlspecialchars en Java
Pour déboguer avec Eclipse
Implémentation Boyer-Moore en Java
Hello World en Java
Mémorandum WebApi avec Java
Détermination de type en Java
Exécuter des commandes en Java (ping)
Divers threads en java
Implémentation du tri de tas (en java)
Art ASCII à Java
Comparer des listes en Java
POST JSON en Java
Exprimer l'échec en Java
Comment Git gérer les projets Java EE dans Eclipse
Créer JSON en Java
Manipulation de la date dans Java 8