首页 > 其他分享 >JPA使用实例

JPA使用实例

时间:2023-05-30 17:46:12浏览次数:31  
标签:transaction student 实例 JPA private entityManager ex Student 使用

当然,以下是一个更详细的JPA示例代码,涵盖了实体类的关系映射、查询、插入、更新和删除操作:

import javax.persistence.*;

@Entity
@Table(name = "students")
public class Student {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "name")
    private String name;

    @Column(name = "age")
    private int age;

    // Getters and setters
}

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import java.util.List;

public class JpaDemo {
    private static final String PERSISTENCE_UNIT_NAME = "myPersistenceUnit";
    private static EntityManagerFactory entityManagerFactory;

    public static void main(String[] args) {
        // 初始化实体管理器工厂
        entityManagerFactory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);

        // 创建示例学生对象
        Student student1 = new Student();
        student1.setName("Alice");
        student1.setAge(20);

        Student student2 = new Student();
        student2.setName("Bob");
        student2.setAge(22);

        // 插入示例数据
        insertStudent(student1);
        insertStudent(student2);

        // 查询所有学生
        List<Student> students = getAllStudents();
        System.out.println("All Students:");
        for (Student student : students) {
            System.out.println("ID: " + student.getId() + ", Name: " + student.getName() + ", Age: " + student.getAge());
        }

        // 更新学生信息
        student1.setAge(21);
        updateStudent(student1);

        // 查询单个学生
        Student student = getStudentById(student1.getId());
        System.out.println("Student with ID " + student1.getId() + ":");
        System.out.println("ID: " + student.getId() + ", Name: " + student.getName() + ", Age: " + student.getAge());

        // 删除学生
        deleteStudent(student2);

        // 再次查询所有学生
        students = getAllStudents();
        System.out.println("All Students after deletion:");
        for (Student s : students) {
            System.out.println("ID: " + s.getId() + ", Name: " + s.getName() + ", Age: " + s.getAge());
        }

        // 关闭实体管理器工厂
        entityManagerFactory.close();
    }

    private static EntityManager getEntityManager() {
        return entityManagerFactory.createEntityManager();
    }

    private static void insertStudent(Student student) {
        EntityManager entityManager = getEntityManager();
        EntityTransaction transaction = null;
        try {
            transaction = entityManager.getTransaction();
            transaction.begin();
            entityManager.persist(student);
            transaction.commit();
        } catch (Exception ex) {
            if (transaction != null) {
                transaction.rollback();
            }
            ex.printStackTrace();
        } finally {
            entityManager.close();
        }
    }

    private static List<Student> getAllStudents() {
        EntityManager entityManager = getEntityManager();
        try {
            String query = "SELECT s FROM Student s";
            TypedQuery<Student> typedQuery = entityManager.createQuery(query, Student.class);
            return typedQuery.getResultList();
        } catch (Exception ex) {
            ex.printStackTrace();
            return null;
        } finally {
            entityManager.close();
        }
    }

    private static Student getStudentById(Long id) {
        EntityManager entityManager = getEntityManager();
        try {
            return entityManager.find(Student.class, id);
        } catch (Exception ex) {
            ex.printStackTrace();
            return null;
        } finally {


            entityManager.close();
        }
    }

    private static void updateStudent(Student student) {
        EntityManager entityManager = getEntityManager();
        EntityTransaction transaction = null;
        try {
            transaction = entityManager.getTransaction();
            transaction.begin();
            entityManager.merge(student);
            transaction.commit();
        } catch (Exception ex) {
            if (transaction != null) {
                transaction.rollback();
            }
            ex.printStackTrace();
        } finally {
            entityManager.close();
        }
    }

    private static void deleteStudent(Student student) {
        EntityManager entityManager = getEntityManager();
        EntityTransaction transaction = null;
        try {
            transaction = entityManager.getTransaction();
            transaction.begin();
            entityManager.remove(entityManager.contains(student) ? student : entityManager.merge(student));
            transaction.commit();
        } catch (Exception ex) {
            if (transaction != null) {
                transaction.rollback();
            }
            ex.printStackTrace();
        } finally {
            entityManager.close();
        }
    }
}

在上述代码中,我们定义了一个Student实体类,并使用注解进行了表和字段的映射。在JpaDemo类中,我们演示了如何使用JPA进行数据操作,包括插入数据、查询数据、更新数据和删除数据。此外,我们还展示了如何获取实体管理器、开启事务、提交事务以及关闭实体管理器工厂。

标签:transaction,student,实例,JPA,private,entityManager,ex,Student,使用
From: https://www.cnblogs.com/lukairui/p/17443903.html

相关文章

  • Druid使用实例
    当然,以下是一个详细的Druid示例代码,演示了如何配置和使用Druid连接池:importcom.alibaba.druid.pool.DruidDataSource;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;publicclassDruidDemo{......
  • gRPC使用实例
    当然!这是三个使用Java实现的gRPC示例代码,用于演示gRPC的基本用法和通信模式:示例1:简单的UnaryRPC在此示例中,客户端向服务器发送请求,并接收单个响应。gRPC服务定义文件(.proto文件):syntax="proto3";packagecom.example.grpcdemo;serviceGreetingService{rpcSayHel......
  • Thrift使用实例
    当然!这是三个使用Java实现的Thrift示例代码,用于演示Thrift的基本用法和通信模式:示例1:简单的服务端和客户端在此示例中,我们将创建一个简单的Thrift服务端和客户端,客户端向服务端发送请求并接收响应。Thrift定义文件(.thrift文件):namespacejavacom.example.thriftdemoservice......
  • CSS 删除线:在 CSS 中使用文本装饰和划线
    CSS删除线是一个CSS属性,它使文本看起来像是被删除线一样,就像这样。在网络开发和写作中,这经常用于表示文本已被删除或不再相关。但它也可以用于不同的事情。删除线可以应用于span元素、段落、div、显示内联块或任何其他需要文本修饰的元素。除了下划线、斜体和粗体,CSS删除线也......
  • leetcode Kth Largest Element in a Stream——要熟悉heapq使用
    703.KthLargestElementinaStreamEasyDesignaclasstofind thekthlargestelementinastream.Notethatitisthekthlargestelementinthesortedorder,notthekthdistinctelement.Your KthLargest classwillhaveaconstructorwhichacceptsanin......
  • 漏洞扫描工具Nessus详细使用教程
    漏洞扫描工具Nessus详细使用教程zkzq于 2022-02-0918:14:35 发布28574 收藏 195分类专栏: 黑客工具 文章标签: 网络安全 web安全 渗透测试版权黑客工具专栏收录该内容11篇文章13订阅订阅专栏零基础学黑客,搜索公众号:白帽子左一1原文地址......
  • Dubbo使用实例
    下面是一个使用Java实现的Dubbo示例代码,包括服务提供者和服务消费者:首先,您需要确保已安装ZooKeeper,并且ZooKeeper服务器正在运行。接下来,您可以使用以下示例代码创建Dubbo的服务提供者和服务消费者:服务提供者示例代码:接口定义:publicinterfaceGreetingService{String......
  • .net调用动态库NationECCode.dll使用电子凭证二维码解码接口
    .net调用动态库NationECCode.dll使用电子凭证二维码解码接口 C#.net调用示例代码:[DllImport("NationECCode.dll",CallingConvention=CallingConvention.StdCall)]publicstaticexternvoidNationEcTrans(stringurl,stringinput,IntPtroutput);......
  • 如何使用ComboBox以获取用户的单选并可编辑
    如何使用ComboBox以获取用户的单选并可编辑ComboBox是一种单选下拉框,和ChoiceBox很类似。ComboBox不仅可以接收用户的一个选项,还可以提供可编辑框,让用户输入内容。效果展示示例代码importjavafx.application.Application;importjavafx.geometry.Insets;importjava......
  • python中如何使用正则表达式查询字符串
    '''Createdon2019年12月2日@author:hp''''''上一篇文章介绍了那么多关于正则表达式的用法,现在终于到了python中如何使用正则表达式了,不急,请诸君慢慢来''''''之前在讲字符串时,已经说过了字符串的格式化输出,大家没看的可以看我的上一篇文章格式化输出时,是含有模式串......