(03)Hibernate实现CRUD的案例

IEmployeeDao.java

package com.rk.hibernate.b_crud;

import java.io.Serializable;
import java.util.List;

import com.rk.hibernate.a_hello.Employee;

public interface IEmployeeDao
{
	Employee findById(Serializable id);
	void save(Employee emp);
	void update(Employee emp);
	void delete(Serializable id);
	List<Employee> findAll();
	List<Employee> findByName(String empName);
	List<Employee> page(int index,int count);
}

EmployeeDaoImpl.java

package com.rk.hibernate.b_crud;

import java.io.Serializable;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import com.rk.hibernate.a_hello.Employee;
import com.rk.hibernate.utils.HibernateUtils;

public class EmployeeDaoImpl implements IEmployeeDao
{
	@Override
	public Employee findById(Serializable id)
	{
		Session session = null;
		Transaction tx = null;
		try
		{
			// 获取Session
			session = HibernateUtils.getSession();
			// 开启事务
			tx = session.beginTransaction();
			// 主键查询
			Employee obj = (Employee) session.get(Employee.class, id);
			return obj;
		}
		catch (Exception e)
		{
			throw new RuntimeException(e);
		}
		finally
		{
			tx.commit();
			session.close();
		}
	}

	@Override
	public void save(Employee emp)
	{
		Session session = null;
		Transaction tx = null;
		try
		{
			session = HibernateUtils.getSession();
			tx = session.beginTransaction();
			// 执行保存操作
			session.save(emp);
		}
		catch (Exception e)
		{
			throw new RuntimeException(e);
		}
		finally
		{
			tx.commit();
			session.close();
		}

	}

	@Override
	public void update(Employee emp)
	{
		Session session = null;
		Transaction tx = null;
		try
		{
			session = HibernateUtils.getSession();
			tx = session.beginTransaction();
			session.update(emp);
		}
		catch (Exception e)
		{
			throw new RuntimeException(e);
		}
		finally
		{
			tx.commit();
			session.close();
		}
	}

	@Override
	public void delete(Serializable id)
	{
		Session session = null;
		Transaction tx = null;
		try
		{
			session = HibernateUtils.getSession();
			tx = session.beginTransaction();
			// 先根据id查询对象,再判断删除
			Object obj = session.get(Employee.class, id);
			if (obj != null) session.delete(obj);
		}
		catch (Exception e)
		{
			throw new RuntimeException(e);
		}
		finally
		{
			tx.commit();
			session.close();
		}
	}

	@Override
	public List<Employee> findAll()
	{
		Session session = null;
		Transaction tx = null;
		try
		{
			session = HibernateUtils.getSession();
			tx = session.beginTransaction();
			// HQL查询
			Query q = session.createQuery("from Employee");
			List<Employee> list = q.list();
			return list;
		}
		catch (Exception e)
		{
			throw new RuntimeException(e);
		}
		finally
		{
			tx.commit();
			session.close();
		}
	}

	@Override
	public List<Employee> findByName(String empName)
	{
		Session session = null;
		Transaction tx = null;
		try
		{
			session = HibernateUtils.getSession();
			tx = session.beginTransaction();

			Query q = session.createQuery("from Employee where empName=?");
			// 注意:参数索引从0开始
			q.setParameter(0, empName);
			// 执行查询
			List<Employee> list = q.list();

			return list;
		}
		catch (Exception e)
		{
			throw new RuntimeException(e);
		}
		finally
		{
			tx.commit();
			session.close();
		}
	}

	@Override
	public List<Employee> page(int index, int count)
	{
		Session session = null;
		Transaction tx = null;
		try
		{
			session = HibernateUtils.getSession();
			tx = session.beginTransaction();

			Query q = session.createQuery("from Employee");
			// 设置分页参数
			q.setFirstResult(index); // 查询的起始行
			q.setMaxResults(count); // 查询返回的行数
			List<Employee> list = q.list();

			return list;
		}
		catch (Exception e)
		{
			throw new RuntimeException(e);
		}
		finally
		{
			tx.commit();
			session.close();
		}
	}

}

HibernateUtils.java

package com.rk.hibernate.utils;

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

public class HibernateUtils
{
	private static SessionFactory sessionFactory;
	static
	{
		sessionFactory = new Configuration().configure().buildSessionFactory();
	}

	public static Session getSession()
	{
		return sessionFactory.openSession();
	}
}
时间: 2024-08-28 13:39:32

(03)Hibernate实现CRUD的案例的相关文章

Rhythmk 学习 Hibernate 03 - Hibernate 之 延时加载 以及 ID 生成策略

Hibernate 加载数据 有get,跟Load 1.懒加载: 使用session.load(type,id)获取对象,并不读取数据库,只有在使用返回对象值才正真去查询数据库. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 @Test    public void  test1()    {        Session session = null;         try {             session = Hiber

hibernate的CRUD操作

本文简单总结一下hibernate的具有映射关系CRUD操作,主要使用到了cascade和fetch,其中cascade针对的是CUD操作,表示级联关系,fetch针对的是R操作,表示级联加载方式. 1.先看下javaEE的API中关于cascade的描述 javax.persistence Enum CascadeType java.lang.Object java.lang.Enum<CascadeType> javax.persistence.CascadeType All Implem

Hibernate的CRUD重用性

1.在研究了hibernate框架之后,准备完成一套Hibernate的CRUD操作,并且让其具有高度的重用性.在复杂查询方面,hibernate可谓是各种不方便,因此查询方面,利用java反射做出一套根据对象属性来动态查询数据的小框架. 2.先做出可行的设计图 3.具体的实现过程 1 package com.framework.common.dao; 2 3 import test.framework.common.PageEntity; 4 5 import java.util.List;

03 Hibernate错题分析

1.在Hibernate中,以下关于主键生成器说法错误的是( C). A.increment可以用于类型为long.short或byte的主键 B.identity用于如SQL Server.DB2.MySQL等支持标识列的数据库 C.sequence用于如Oracle.SQL Server等支持序列的数据库 D.native由Hibernate根据底层数据库自行判断采用何种主键生成策略,是由使用的数据库生成主键的值 解析:C .sequence不能用于SQL Server数据库 2.使用HQL

Spring+Jersey+JPA+Hibernate+MySQL实现CRUD操作案例

本文承接我的另一篇博文:Spring+Jersey+Hibernate+MySQL+HTML实现用户信息增删改查案例(附Jersey单元测试),主要更改内容如下: Spring配置文件applicationContext中原先使用的是Hibernate,现在改为Hibernate对JPA的支持: 增加了C3P0连接池: 修改了Dao操作实现,改为Spring接管的JPA实现. 如果读者想详细查看Spring整合Jersey与前端交互可以点击上述连接.本文主要介绍以上三处修改内容,并且使用Jers

Spring MVC + Hibernate + Maven: Crud操作示例

Alexey是一个在使用Java,TestNG 和Selenium的自动化WEB应用程序中有丰富经验的测试开发者.他如此的喜欢QA以至于在下班后他为初级QA工程师提供培训课程. 在这篇文章中我想介绍一个Spring MVC + Hibernate + Maven例子.这组技术主要涉及一些基础知识,我想在每一个必要的地方详细解释它.本篇话题范围以外的更多资源,我会提供链接方便你阅读.在文章的最后,我将发布一个GitHub的链接. 目标 示例web应用程序是基于Spring MVC, Hiberna

Hibernate介绍和入门案例

一身转战三千里,一剑曾当百万师 如果你在之前没有学过SSH三大框架,那么你之前肯定是通过JDBC来对数据库进行操作.现在,你完全可以把跟数据库交互的操作直接交给Hibernate. Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的 orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hibernate可以应用在任何使用JDBC

hibernate之CRUD操作

CRUD是指在做计算处理时的增加(Create).读取(Retrieve)(重新得到数据).更新(Update)和删除(Delete)几个单词的首字母简写. 下面列举实例来讲解这几个操作: 实体类: package com.oumyye.model; public class Student { private long id; private String name; private Class c; public long getId() { return id; } public void

java框架篇---hibernate之CRUD操作

CRUD是指在做计算处理时的增加(Create).读取(Retrieve)(重新得到数据).更新(Update)和删除(Delete)几个单词的首字母简写. 下面列举实例来讲解这几个操作: 实体类: package com.oumyye.model; public class Student { private long id; private String name; private Class c; public long getId() { return id; } public void