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

王林
リリース: 2023-06-10 10:15:16
オリジナル
856 人が閲覧しました

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート