ホームページ  >  記事  >  データベース  >  JPAテクノロジーを使用して、JavaオブジェクトをMySQLデータベースに保存して保存します。

JPAテクノロジーを使用して、JavaオブジェクトをMySQLデータベースに保存して保存します。

王林
王林オリジナル
2023-06-10 10:15:16840ブラウズ

JPA (Java Persistence API) は、Java EE 5.0 で導入された ORM 仕様です。その目的は、オブジェクトとリレーショナル データベースのマッピングを簡素化し、Java 開発者が Java オブジェクトをリレーショナル データベースに簡単に永続化できるようにすることです。 JPA はデータの概念を抽象化することで Java オブジェクトとリレーショナル データベース間のマッピングを隠蔽するため、開発者はデータ ストレージの詳細に注意を払うことなくビジネス コードの作成に集中できます。

この記事では、JPA テクノロジーを使用して、Java オブジェクトを MySQL データベースに保存して保存する方法を紹介します。

まず、単純な学生クラスなどのデータ モデルを定義する必要があります。

@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方法
}

上記のコードでは、JPA アノテーションを使用してエンティティ クラスを定義します。 @Entity アノテーションは、このクラスを JPA エンティティ クラスとしてマークするために使用されます。@Id アノテーションは、フィールドがプライマリであることを示しますキー、および @GeneratedValue アノテーションは、フィールドが自動的に生成された主キーであることを示します。また、@Column アノテーションは、フィールドに対応するデータベース列情報を指定するために使用されます。

次に、このプロジェクトでは、JPA が提供する EntityManager インスタンスを使用して、エンティティ クラスの操作を実行する必要があります。 JPAを使用する前に、データソースとJPA関連の構成情報を構成ファイルに指定する必要があります。

<?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>

上記の設定ファイルでは、Hibernate によって提供される実装を使用し、データ ソースと JPA 関連の設定情報を指定します。

次に、Java コードでは、エンティティ クラスは EntityManager インスタンスを通じて操作されます。

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();
        }
    }
}

上記のコードでは、エンティティ クラスの操作を実行するための StudentManager クラスを作成しました。この中で、EntityManagerFactory インスタンスを通じて EntityManager インスタンスが作成され、エンティティ クラスの C(R)UD 操作が実装されました。インスタンスを操作しています。

最後に、次のコードを通じてコードをテストできます:

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
}

上記のコードを通じて、Java オブジェクト インターフェイスを永続化するときに JPA が非常に便利で使いやすいことがわかります。開発者は、エンティティ クラスを定義し、簡単なアノテーションを通じてデータ ソースと JPA 情報を構成するだけで、Java オブジェクトをリレーショナル データベースに直接保存して保存できます。これにより、開発者が必要とするコーディングの量が大幅に削減され、開発効率が向上し、手書きの SQL ステートメントによって引き起こされる潜在的なセキュリティ リスクが回避されます。

以上がJPAテクノロジーを使用して、JavaオブジェクトをMySQLデータベースに保存して保存します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。