Hibernate配置,CRUD操作,Junit单元测试

来源:互联网 发布:calendar什么软件 编辑:程序博客网 时间:2024/04/28 15:54

本文资料来自java1234小峰(java1234.com)

官网:http://hibernate.org/

Hibernate 是一个开放源代码的对象关系映射框架,它对JDBC 进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate 可以应用在任何使用JDBC 的场合,既可以在Java 的客户端程序使用,也可以在Servlet/JSP 的Web 应用中使用,最具革命意义的是,Hibernate可以在应用EJB 的J2EE 架构中取代CMP,完成数据持久化的重任。ORM 框架,对象关系映射(Object/Relation 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/hibernate</property>        <property name="connection.username">root</property>        <property name="connection.password">123456</property>               <!-- 方言 -->        <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>        <!-- 控制台显示SQL -->        <property name="show_sql">true</property>        <!-- 自动更新表结构 -->        <property name="hbm2ddl.auto">update</property>          <mapping resource="com/zhiqi/model/Employee.hbm.xml"/>    </session-factory></hibernate-configuration>

创建一个Employee对象

package com.zhiqi.model;public class Employee {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;}}

配置Employee.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.zhiqi.model"><class name="Employee" table="t_employee"><id name="id" column="employee_id"><generator class="native"></generator></id><property name="name"></property></class></hibernate-mapping>

测试类

package com.zhiqi.service;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.boot.registry.StandardServiceRegistryBuilder;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;public class EmployeeTest {public static void main(String[] args) {Configuration configuration=new Configuration().configure();//实例化配置文件ServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();SessionFactory sessionFactory=configuration.buildSessionFactory(serviceRegistry);//获取session工厂Session session=sessionFactory.openSession();session.beginTransaction();//开始事务session.getTransaction().commit();//提交事务session.close();//关闭sessionsessionFactory.close();//关闭session工厂}}
运行一下




数据库已经多了一张表

我们看表结构


设置数据



1、HibernateUtil 封装

2、XML 版CRUD 实现

package com.zhiqi.service;import java.util.List;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.SessionFactory;import com.zhiqi.model.Employee;import com.zhiqi.util.HibernateUtil;public class EmployeeTest {private SessionFactory sessionFactory=HibernateUtil.getSessionFactory();public static void main(String[] args) {EmployeeTest employeeTest=new EmployeeTest();//employeeTest.add();//employeeTest.delete();//employeeTest.update();employeeTest.getAllEmployee();}private void add(){Session session=sessionFactory.openSession();session.beginTransaction();//开始事务Employee emp=new Employee();emp.setName("德玛西亚3");session.save(emp);session.getTransaction().commit();//提交事务session.close();//关闭sessionsessionFactory.close();//关闭session工厂}private void delete(){Session session=sessionFactory.openSession();session.beginTransaction();//开始事务Employee emp=(Employee)session.get(Employee.class, Long.valueOf(1));session.delete(emp);session.getTransaction().commit();//提交事务session.close();//关闭sessionsessionFactory.close();//关闭session工厂}private void update(){Session session=sessionFactory.openSession(); // 生成一个session    session.beginTransaction(); // 开启事务        Employee emp=(Employee)session.get(Employee.class, Long.valueOf(2));    emp.setName("女枪");    session.save(emp);        session.getTransaction().commit(); // 提交事务    session.close(); // 关闭session}private void getAllEmployee(){Session session=sessionFactory.openSession();session.beginTransaction();//开始事务String hql="from Employee";//这是个类Query query=session.createQuery(hql);List<Employee> employeeList=query.list();for(Employee emp:employeeList){System.out.println(emp);}session.getTransaction().commit();//提交事务session.close();//关闭sessionsessionFactory.close();//关闭session工厂}}



3、注解版CRUD 实现

package com.zhiqi.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_manager")public class Manager {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;}@Overridepublic String toString() {return "Manager [id=" + id + ", name=" + name + "]";}}


4、Junit4 单元测试框架引入

package com.zhiqi.service;import java.util.List;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.junit.Test;import com.zhiqi.model.Manager;import com.zhiqi.util.HibernateUtil;public class ManagerTest2 {private SessionFactory sessionFactory=HibernateUtil.getSessionFactory();@Testpublic void testAdd() {Session session=sessionFactory.openSession();session.beginTransaction();//开始事务Manager emp=new Manager();emp.setName("暴走萝莉");session.save(emp);session.getTransaction().commit();//提交事务session.close();//关闭sessionsessionFactory.close();//关闭session工厂}@Testpublic void testDelete() {Session session=sessionFactory.openSession();session.beginTransaction();//开始事务Manager emp=(Manager)session.get(Manager.class, Long.valueOf(1));session.delete(emp);session.getTransaction().commit();//提交事务session.close();//关闭sessionsessionFactory.close();//关闭session工厂}@Testpublic void testUpdate() {Session session=sessionFactory.openSession(); // 生成一个session    session.beginTransaction(); // 开启事务        Manager emp=(Manager)session.get(Manager.class, Long.valueOf(2));    emp.setName("女枪");    session.save(emp);        session.getTransaction().commit(); // 提交事务    session.close(); // 关闭session}@Testpublic void testGetAllManager() {Session session=sessionFactory.openSession();session.beginTransaction();//开始事务String hql="from Manager";//这是个类Query query=session.createQuery(hql);List<Manager> ManagerList=query.list();for(Manager emp:ManagerList){System.out.println(emp);}session.getTransaction().commit();//提交事务session.close();//关闭sessionsessionFactory.close();//关闭session工厂}}


0 0