>  기사  >  데이터 베이스  >  JPA 기술을 통해 저장을 위해 Java 객체를 MySQL 데이터베이스에 유지합니다.

JPA 기술을 통해 저장을 위해 Java 객체를 MySQL 데이터베이스에 유지합니다.

王林
王林원래의
2023-06-10 10:15:16800검색

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
}

위 코드를 통해 JPA가 Java 객체를 유지할 때 매우 편리하고 사용하기 쉬운 인터페이스를 제공한다는 것을 알 수 있습니다. 개발자는 엔터티 클래스를 정의하고 간단한 주석을 통해 데이터 소스와 JPA 정보를 구성한 다음 Java 객체를 관계형 데이터베이스에 직접 저장하여 저장할 수 있습니다. 이를 통해 개발자에게 필요한 코딩 양이 크게 줄어들고, 개발 효율성이 향상되며, 직접 작성한 SQL 문으로 인해 발생할 수 있는 보안 위험을 방지할 수 있습니다.

위 내용은 JPA 기술을 통해 저장을 위해 Java 객체를 MySQL 데이터베이스에 유지합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.