`

Hibernate4的CRUD

阅读更多
1. Hibernate4的CRUD

新建项目Hibernate02


1) HibernateUtil封装

HibernateUtil.java

package com.andrew.util;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
public class HibernateUtil {
    private static final SessionFactory sessionFactory = buildSessionFactory();
    private static SessionFactory buildSessionFactory() {
        // 1. 实例化配置文件
        Configuration configuration = new Configuration().configure();
        // 2. 实例化服务登记
        ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
                .applySettings(configuration.getProperties()).build();
        // 3. 获取Session工厂
        return configuration.buildSessionFactory(serviceRegistry);
    }
    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
}


2) XML版CRUD实现

Student.java

package com.andrew.model;
public class Student {
    private long id;
    private String name;
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        return "Student [id=" + id + ", name=" + name + "]";
    }
}

Student.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.andrew.model">
    <class name="Student" table="t_student">
        <id column="stuId" name="id">
            <generator class="native"/>
        </id>
        <property generated="never" lazy="false" name="name"/>
    </class>
</hibernate-mapping>

hibernate.cfg.xml

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- 数据库连接设置 -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/hibernate4</property>
        <property name="connection.username">root</property>
        <property name="connection.password">root</property>
        <!-- 方言 -->
        <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
        <!-- 控制台显示SQL -->
        <property name="show_sql">true</property>
        <!-- 自动更新表结构 -->
        <property name="hbm2ddl.auto">update</property>
        <!-- Mapper -->
        <mapping resource="com/andrew/model/Student.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

StudentTest.java

package com.andrew.service;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import com.andrew.model.Student;
import com.andrew.util.HibernateUtil;
public class StudentTest {
    private SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
    private void add() {
        Session session = sessionFactory.openSession(); // 1. 生成一个session
        session.beginTransaction(); // 2. 开启事务
        Student s = new Student();
        s.setName("学生一");
        session.save(s);
        session.getTransaction().commit(); // 3. 提交事务
        session.close(); // 4. 关闭session
    }
    private void delete() {
        Session session = sessionFactory.openSession(); // 1. 生成一个session
        session.beginTransaction(); // 2. 开启事务
        Student student = (Student)session.get(Student.class, Long.valueOf(2));
        session.delete(student);
        session.getTransaction().commit(); // 3. 提交事务
        session.close(); // 4. 关闭session
    }
    private void update() {
        Session session = sessionFactory.openSession(); // 1. 生成一个session
        session.beginTransaction(); // 2. 开启事务
        Student student = (Student)session.get(Student.class, Long.valueOf(1));
        student.setName("学生二");
        session.save(student);
        session.getTransaction().commit(); // 3. 提交事务
        session.close(); // 4. 关闭session
    }
    private void getAllStudent() {
        Session session = sessionFactory.openSession(); // 1. 生成一个session
        session.beginTransaction(); // 2. 开启事务
        String hql = "from Student";
        Query query = session.createQuery(hql);
        List<Student> studentList = query.list();
        for (Student student : studentList) {
            System.out.println(student);
        }
        session.getTransaction().commit(); // 3. 提交事务
        session.close(); // 4. 关闭session
    }
    public static void main(String[] args) {
        StudentTest studentTest = new StudentTest();
        // studentTest.add();
        // studentTest.delete();
        // studentTest.update();
        studentTest.getAllStudent();
    }
}


3) 注解版CRUD实现

Teacher.java

package com.andrew.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
@Entity
@Table(name="t_teacher")
public class Teacher {
    private long id;
    private String name;
    @Id
    @GeneratedValue(generator="_native")
    @GenericGenerator(name="_native", strategy="native")
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        return "Teacher [id=" + id + ", name=" + name + "]";
    }
}

hibernate.cfg.xml

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- 数据库连接设置 -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/hibernate4</property>
        <property name="connection.username">root</property>
        <property name="connection.password">root</property>
        <!-- 方言 -->
        <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
        <!-- 控制台显示SQL -->
        <property name="show_sql">true</property>
        <!-- 自动更新表结构 -->
        <property name="hbm2ddl.auto">update</property>
        <!-- Mapper -->
        <mapping class="com.andrew.model.Teacher"/>
    </session-factory>
</hibernate-configuration>

TeacherTest.java

package com.andrew.service;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import com.andrew.model.Teacher;
import com.andrew.util.HibernateUtil;
public class TeacherTest {
    private SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
    private void add() {
        Session session = sessionFactory.openSession(); // 1. 生成一个session
        session.beginTransaction(); // 2. 开启事务
        Teacher s = new Teacher();
        s.setName("老师一");
        session.save(s);
        session.getTransaction().commit(); // 3. 提交事务
        session.close(); // 4. 关闭session
    }
    private void delete() {
        Session session = sessionFactory.openSession(); // 1. 生成一个session
        session.beginTransaction(); // 2. 开启事务
        Teacher teacher = (Teacher)session.get(Teacher.class, Long.valueOf(1));
        session.delete(teacher);
        session.getTransaction().commit(); // 3. 提交事务
        session.close(); // 4. 关闭session
    }
    private void update() {
        Session session = sessionFactory.openSession(); // 1. 生成一个session
        session.beginTransaction(); // 2. 开启事务
        Teacher teacher = (Teacher)session.get(Teacher.class, Long.valueOf(2));
        teacher.setName("老师三");
        session.save(teacher);
        session.getTransaction().commit(); // 3. 提交事务
        session.close(); // 4. 关闭session
    }
    private void getAllteacher() {
        Session session = sessionFactory.openSession(); // 1. 生成一个session
        session.beginTransaction(); // 2. 开启事务
        String hql = "from Teacher";
        Query query = session.createQuery(hql);
        List<Teacher> teacherList = query.list();
        for (Teacher teacher : teacherList) {
            System.out.println(teacher);
        }
        session.getTransaction().commit(); // 3. 提交事务
        session.close(); // 4. 关闭session
    }
    public static void main(String[] args) {
        TeacherTest teacherTest = new TeacherTest();
        // teacherTest.add();
        // teacherTest.delete();
        // teacherTest.update();
        teacherTest.getAllteacher();
    }
}


4) Junit4单元测试框架引入

junit jar包

junit4.4.jar

TeacherJunitTest.java

package com.andrew.junit;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.junit.Test;
import com.andrew.model.Teacher;
import com.andrew.util.HibernateUtil;
public class TeacherJunitTest {
    private SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
    @Test
    public void testAdd() {
        Session session = sessionFactory.openSession(); // 1. 生成一个session
        session.beginTransaction(); // 2. 开启事务
        Teacher s = new Teacher();
        s.setName("张三");
        session.save(s);
        session.getTransaction().commit(); // 3. 提交事务
        session.close(); // 4. 关闭session
    }
    @Test
    public void testDelete() {
        Session session = sessionFactory.openSession(); // 1. 生成一个session
        session.beginTransaction(); // 2. 开启事务
        Teacher Teacher = (Teacher) session.get(Teacher.class, Long.valueOf(2));
        session.delete(Teacher);
        session.getTransaction().commit(); // 3. 提交事务
        session.close(); // 4. 关闭session
    }
    @Test
    public void testUpdate() {
        Session session = sessionFactory.openSession(); // 1. 生成一个session
        session.beginTransaction(); // 2. 开启事务
        Teacher Teacher = (Teacher) session.get(Teacher.class, Long.valueOf(3));
        Teacher.setName("张三2");
        session.save(Teacher);
        session.getTransaction().commit(); // 3. 提交事务
        session.close(); // 4. 关闭session
    }
    @Test
    public void testGetAllTeacher() {
        Session session = sessionFactory.openSession(); // 1. 生成一个session
        session.beginTransaction(); // 2. 开启事务
        String hql = "from Teacher";
        Query query = session.createQuery(hql);
        List<Teacher> TeacherList = query.list();
        for (Teacher Teacher : TeacherList) {
            System.out.println(Teacher);
        }
        session.getTransaction().commit(); // 3. 提交事务
        session.close(); // 4. 关闭session
    }
}
分享到:
评论

相关推荐

    Spring4-Struts2-Hibernate4 CRUD Demo_3

    【Spring4-Struts2-Hibernate4 CRUD Demo_3】是一个综合性的开发示例,它展示了如何在Java Web应用程序中整合三大主流框架:Spring 4、Struts 2和Hibernate 4来实现CRUD(创建、读取、更新、删除)操作。这个Demo...

    Spring4-Struts2-Hibernate4 CRUD Demo (1)

    【Spring4-Struts2-Hibernate4 CRUD Demo (1)】是一个典型的Java Web开发示例,它演示了如何集成Spring4、Struts2和Hibernate4框架来实现CRUD(创建、读取、更新和删除)操作。这个项目是初学者学习企业级应用开发的...

    Spring4-Struts2-Hibernate4 CRUD Demo

    【Spring4-Struts2-Hibernate4 CRUD Demo】是一个经典的Java Web开发示例,它结合了Spring Framework 4、Struts 2和Hibernate 4这三个流行的技术,用于实现CRUD(Create, Read, Update, Delete)操作。这个项目旨在...

    Spring4-Struts2-Hibernate4 CRUD Demo_5

    【Spring4-Struts2-Hibernate4 CRUD Demo_5】是一个综合性的开发示例,它展示了如何在Java Web应用程序中整合三大主流框架:Spring 4、Struts2和Hibernate4,进行基本的数据创建(Create)、读取(Read)、更新...

    Spring4-Struts2-Hibernate4 CRUD Demo_4

    【Spring4-Struts2-Hibernate4 CRUD Demo_4】是一个综合性的开发示例,它展示了如何在Java Web应用中整合三大主流框架——Spring 4、Struts 2和Hibernate 4来实现CRUD(创建、读取、更新、删除)操作。这个Demo旨在...

    Spring4-Struts2-Hibernate4 CRUD Demo_1

    这个"Spring4-Struts2-Hibernate4 CRUD Demo_1"是一个示例项目,它演示了如何整合这三个框架来实现基本的CRUD(创建、读取、更新、删除)操作。下面我们将深入探讨这些框架的核心功能和它们在项目中的作用。 **...

    Spring4-Struts2-Hibernate4 CRUD Demo_2

    ssh_demo_2 这个文件很可能是包含了一个完整的示例项目,演示如何使用Spring4、Struts2和Hibernate4来实现一个CRUD应用。这个示例可能包含了配置文件(如struts.xml、spring-context.xml)、实体类、DAO(Data ...

    带struts2和hibernate的crud小demo

    这个"带Struts2和Hibernate的CRUD小Demo"是一个实用的学习资源,它演示了如何将这两个框架集成以实现数据的创建、读取、更新和删除(CRUD)操作。 首先,Struts2是一个开源的MVC(Model-View-Controller)框架,它...

    Strust2+Hibernate实现CRUD操作网页

    在这个"Struts2+Hibernate实现CRUD操作网页"项目中,我们能看到开发者如何结合这两个框架来创建一个能够进行创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete)操作的Web应用程序。以下是这个项目中的关键...

    Struts_Spring_Hibernate_CRUD操作案例_-分页查询

    4. **CRUD操作**: - **Create(创建)**:通过Hibernate的save()或saveOrUpdate()方法将对象持久化到数据库。 - **Read(读取)**:利用Session的get()、load()或query()方法获取数据。 - **Update(更新)**:...

    struts2与hibernate结合crud实例

    ### Struts2与Hibernate结合实现CRUD操作实例详解 #### 一、背景介绍 CRUD是Create(创建)、Read(读取)、Update(更新)和Delete(删除)四个英文单词首字母的缩写,它是软件工程中最基本的数据操作。本文将详细...

    hibernate 简单CRUD操作

    **Hibernate CRUD操作** CRUD是创建(Create)、读取(Read)、更新(Update)和删除(Delete)的首字母缩写,是数据库管理的基本操作。在Hibernate中,我们可以便捷地进行这些操作。 1. **创建(Create)** - 在...

    Struts2+Hibernate+Crud+For_Extjs用户管理程序

    Struts2、Hibernate和CRUD(Create, Read, Update, Delete)是Java Web开发中的核心框架和技术,而ExtJS则是一种流行的JavaScript库,用于构建富客户端应用。这个"Struts2+Hibernate+Crud+For_Extjs用户管理程序"是...

    Hibernate基本增删改CRUD操作

    **Hibernate基本增删改CRUD操作** 在Java开发中,Hibernate是一个非常流行的持久化框架,它简化了数据库操作,使得开发者无需直接编写SQL语句,就能实现对象与关系数据库之间的映射。本教程将深入讲解如何使用...

    Hibernate-CRUD:HibernateCRUD

    本项目"Hibernate-CRUD"显然是一个关于使用Hibernate进行基本数据操作(创建、读取、更新、删除,即CRUD)的学习资源。以下是关于Hibernate CRUD操作的详细知识点: 1. **Hibernate简介**: Hibernate是Java社区中...

    Struts2整合Spring Hibernate的CRUD实例

    4. **CRUD操作**: - **创建(Create)**:在Action类中,用户提交表单后,Action接收数据,调用Service层的方法,Service再调用DAO层的方法,将数据保存到数据库。DAO通常会使用Session的save()或saveOrUpdate()方法...

    Hibernate-CRUD自用基础模板

    **Hibernate CRUD 自用基础模板详解** Hibernate 是一个流行的开源对象关系映射(ORM)框架,它简化了 Java 应用程序与数据库之间的交互。在Java开发中,CRUD(Create, Read, Update, Delete)是数据库操作的基础,...

    spring3.2 hibernate4 demo CRUD 完整例子

    在本示例中,我们探讨的是一个基于Spring 3.2和Hibernate 4的完整CRUD(创建、读取、更新、删除)操作演示。这个压缩包文件包含了实现这一功能所需的全部资源,让我们深入理解如何将这两个强大的Java框架集成到实际...

    JPA + Hibernate 3 CRUD操作历史审计日志的解决方案

    这篇博客"JPA + Hibernate 3 CRUD操作历史审计日志的解决方案"将深入探讨如何实现这一需求。 首先,我们需要理解JPA和Hibernate的基础概念。JPA定义了一组用于持久化Java对象的API,它允许开发者通过面向对象的方式...

Global site tag (gtag.js) - Google Analytics