Heim > Datenbank > MySQL-Tutorial > Hauptteil

Behalten Sie Java-Objekte zur Speicherung mithilfe der JPA-Technologie in der MySQL-Datenbank bei

王林
Freigeben: 2023-06-10 10:15:16
Original
847 Leute haben es durchsucht

JPA (Java Persistence API) ist eine ORM-Spezifikation, die in Java EE 5.0 eingeführt wurde. Ihr Zweck besteht darin, die Zuordnung von Objekten und relationalen Datenbanken zu vereinfachen und Java-Entwicklern dabei zu helfen, Java-Objekte einfacher in relationalen Datenbanken zu speichern. JPA verbirgt die Zuordnung zwischen Java-Objekten und relationalen Datenbanken, indem es das Konzept der Daten abstrahiert. Entwickler können sich auf das Schreiben von Geschäftscode konzentrieren, ohne auf die Details der Datenspeicherung zu achten.

In diesem Artikel stellen wir vor, wie Sie die JPA-Technologie verwenden, um Java-Objekte zur Speicherung in einer MySQL-Datenbank beizubehalten.

Zuerst müssen wir ein Datenmodell definieren, beispielsweise eine einfache Schülerklasse.

@Entity
public class Student {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false)
    private String name;

    @Column(nullable = false)
    private Integer age;

    // 省略构造函数、getter和setter方法
}
Nach dem Login kopieren

Im obigen Code verwenden wir JPA-Annotationen, um eine Entitätsklasse zu definieren, wobei die @Entity-Annotation verwendet wird, um diese Klasse als JPA-Entitätsklasse zu markieren, die @Id-Annotation angibt, dass das Feld der Primärschlüssel ist, und die Die Annotation @GeneratedValue gibt an, dass das Feld ein automatisch generierter Primärschlüssel ist. Die Annotation @Column wird verwendet, um die Datenbankspalteninformationen anzugeben, die diesem Feld entsprechen.

Als nächstes müssen wir in unserem Projekt die von JPA bereitgestellte EntityManager-Instanz verwenden, um Entitätsklassenoperationen durchzuführen. Bevor wir JPA verwenden, müssen wir die Datenquelle und JPA-bezogene Konfigurationsinformationen in der Konfigurationsdatei angeben.

<?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"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
             http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
             version="2.0">
    <persistence-unit name="myPU" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <class>com.example.Student</class>
        <properties>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/test"/>
            <property name="javax.persistence.jdbc.user" value="root"/>
            <property name="javax.persistence.jdbc.password" value="password"/>
            <property name="hibernate.hbm2ddl.auto" value="update"/>
        </properties>
    </persistence-unit>
</persistence>
Nach dem Login kopieren

In der obigen Konfigurationsdatei verwenden wir die von Hibernate bereitgestellte Implementierung und geben unsere Datenquelle und JPA-bezogene Konfigurationsinformationen an.

Dann führen wir in unserem Java-Code Entitätsklassenoperationen über die EntityManager-Instanz durch.

public class StudentManager {

    private EntityManagerFactory emf = Persistence.createEntityManagerFactory("myPU");

    public void save(Student student) {
        EntityManager em = emf.createEntityManager();
        EntityTransaction tx = em.getTransaction();
        try {
            tx.begin();
            em.persist(student);
            tx.commit();
        } catch (Exception e) {
            tx.rollback();
        } finally {
            em.close();
        }
    }

    public Student getById(Long id) {
        EntityManager em = emf.createEntityManager();
        try {
            return em.find(Student.class, id);
        } finally {
            em.close();
        }
    }

    public List<Student> getAll() {
        EntityManager em = emf.createEntityManager();
        try {
            CriteriaBuilder cb = em.getCriteriaBuilder();
            CriteriaQuery<Student> cq = cb.createQuery(Student.class);
            Root<Student> rootEntry = cq.from(Student.class);
            CriteriaQuery<Student> all = cq.select(rootEntry);
            TypedQuery<Student> allQuery = em.createQuery(all);
            return allQuery.getResultList();
        } finally {
            em.close();
        }
    }

    public void update(Student student) {
        EntityManager em = emf.createEntityManager();
        EntityTransaction tx = em.getTransaction();
        try {
            tx.begin();
            em.merge(student);
            tx.commit();
        } catch (Exception e) {
            tx.rollback();
        } finally {
            em.close();
        }
    }

    public void deleteById(Long id) {
        EntityManager em = emf.createEntityManager();
        EntityTransaction tx = em.getTransaction();
        try {
            tx.begin();
            Student student = em.find(Student.class, id);
            em.remove(student);
            tx.commit();
        } catch (Exception e) {
            tx.rollback();
        } finally {
            em.close();
        }
    }
}
Nach dem Login kopieren

Im obigen Code haben wir eine StudentManager-Klasse erstellt, um Entity-Klassenoperationen durchzuführen. Dabei wurde eine EntityManager-Instanz über die EntityManagerFactory-Instanz erstellt und die C(R)UD-Operation der Entity-Klasse durch Betreiben der Instanz implementiert.

Abschließend können wir unseren Code mit dem folgenden Code testen:

public static void main(String[] args) {
    StudentManager studentManager = new StudentManager();
    Student s1 = new Student("Tom", 18);
    studentManager.save(s1);

    Student s2 = studentManager.getById(1L);
    System.out.println(s2.getName()); // 输出:Tom

    List<Student> students = studentManager.getAll();
    System.out.println(students.size()); // 输出:1

    s2.setName("Jerry");
    studentManager.update(s2);
    s2 = studentManager.getById(1L);
    System.out.println(s2.getName()); // 输出:Jerry

    studentManager.deleteById(1L);
    students = studentManager.getAll();
    System.out.println(students.size()); // 输出:0
}
Nach dem Login kopieren

Anhand des obigen Codes können wir sehen, dass JPA eine sehr praktische und benutzerfreundliche Schnittstelle für die Beibehaltung von Java-Objekten bereitstellt. Entwickler müssen lediglich Entitätsklassen definieren, Datenquellen und JPA-Informationen durch einfache Anmerkungen konfigurieren und können dann Java-Objekte direkt in relationalen Datenbanken zur Speicherung speichern. Dies reduziert den für Entwickler erforderlichen Codierungsaufwand erheblich, verbessert die Entwicklungseffizienz und vermeidet potenzielle Sicherheitsrisiken, die durch handgeschriebene SQL-Anweisungen verursacht werden.

Das obige ist der detaillierte Inhalt vonBehalten Sie Java-Objekte zur Speicherung mithilfe der JPA-Technologie in der MySQL-Datenbank bei. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage