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

Hibernate使用实例

时间:2023-05-30 17:47:04浏览次数:38  
标签:transaction 实例 示例 session Hibernate Student 使用 public ex

示例1:创建实体类和映射

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
}

在示例1中,我们创建了一个名为Student的实体类,并使用注解定义了表名、字段名以及主键的生成策略。该实体类对应数据库中的"students"表,包含id、name和age三个字段。

示例2:配置Hibernate会话工厂

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {
    private static final SessionFactory sessionFactory = buildSessionFactory();

    private static SessionFactory buildSessionFactory() {
        try {
            // 加载Hibernate配置文件
            Configuration configuration = new Configuration().configure("hibernate.cfg.xml");
            return configuration.buildSessionFactory();
        } catch (Exception ex) {
            System.err.println("SessionFactory creation failed: " + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
}

在示例2中,我们创建了一个HibernateUtil类,该类负责配置Hibernate的会话工厂(SessionFactory)。会话工厂是与数据库交互的主要入口点。

示例3:使用Hibernate进行数据操作

import org.hibernate.Session;
import org.hibernate.Transaction;

public class StudentDAO {
    public void saveStudent(Student student) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction transaction = null;
        try {
            transaction = session.beginTransaction();
            session.save(student);
            transaction.commit();
        } catch (Exception ex) {
            if (transaction != null) {
                transaction.rollback();
            }
            ex.printStackTrace();
        } finally {
            session.close();
        }
    }

    public Student getStudentById(Long id) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        try {
            return session.get(Student.class, id);
        } catch (Exception ex) {
            ex.printStackTrace();
            return null;
        } finally {
            session.close();
        }
    }

    public void updateStudent(Student student) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction transaction = null;
        try {
            transaction = session.beginTransaction();
            session.update(student);
            transaction.commit();
        } catch (Exception ex) {
            if (transaction != null) {
                transaction.rollback();
            }
            ex.printStackTrace();
        } finally {
            session.close();
        }
    }

    public void deleteStudent(Student student) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction transaction = null;
        try {
            transaction = session.beginTransaction();
            session.delete(student);
            transaction.commit();
        } catch (Exception ex) {
            if (transaction != null) {
                transaction.rollback();
            }
            ex.printStackTrace();
        } finally {
            session.close();
        }
    }
}

在示例3中,我们创建了一个StudentDAO类,该类负责对Student实体进行增删改查操作。通过打开会话(Session)并在事务(Transaction)中执行相应的操作,我们可以保存、获取、更新和删除学生对象。

请注意,在示例3中,我们通过HibernateUtil类获取会话工厂,并使用会话工

厂打开会话。在每个操作完成后,我们需要关闭会话以释放资源。

标签:transaction,实例,示例,session,Hibernate,Student,使用,public,ex
From: https://www.cnblogs.com/lukairui/p/17443891.html

相关文章

  • JPA使用实例
    当然,以下是一个更详细的JPA示例代码,涵盖了实体类的关系映射、查询、插入、更新和删除操作:importjavax.persistence.*;@Entity@Table(name="students")publicclassStudent{@Id@GeneratedValue(strategy=GenerationType.IDENTITY)privateLongid;......
  • 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......