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