(29)java web的hibernate使用-crud的dao

1, 做个简单的util

public class HibernateUtils {

	private static SessionFactory sf;
	static {
		//加载主要的配置文件
		sf = new Configuration().configure().buildSessionFactory();
	}

	// 打开session
	public static Session getSession(){
		return sf.openSession();
	}
}

2,做个Accounts的qrud接口

public interface AccountDaoInterface {

	//增加
	void save(Account emp);
	//更新
	void update(Account emp);
	//查找
	Account findById(Serializable id);
	List<Account> getAll();
	List<Account> getAll(String AccountName);
	List<Account> getAll(int index, int count);
	//删除
	void delete(Serializable id);

}

  

3,实现接口

public class AccountDao implements AccountDaoInterface {

	@Override
	public Account findById(Serializable id) {
		Session session = null;
		Transaction tx = null;
		try {
			//获取session
			session = HibernateUtils.getSession();
			//开启
			tx = session.beginTransaction();
			//进行查询
			return (Account) session.get(Account.class, id);
		} catch (Exception e) {
			throw new RuntimeException(e);
		} finally {
			tx.commit();
			session.close();
		}
	}

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

	@SuppressWarnings("unchecked")
	@Override
	public List<Account> getAll(String AccountName) {
		Session session = null;
		Transaction tx = null;
		try {
			session = HibernateUtils.getSession();
			tx = session.beginTransaction();
			Query q =session.createQuery("from Account where empName=?");
			// 索引从0开始
			q.setParameter(0, AccountName);
			// 进行查询
			return q.list();
		} catch (Exception e) {
			throw new RuntimeException(e);
		} finally {
			tx.commit();
			session.close();
		}
	}

	@Override
	public List<Account> getAll(int index, int count) {
		Session session = null;
		Transaction tx = null;
		try {
			session = HibernateUtils.getSession();
			tx = session.beginTransaction();
			Query q = session.createQuery("from Account");
			// 设置分页参数
			q.setFirstResult(index);  // 查询开始行数位置
			q.setMaxResults(count);	  // 查询返回的行数

			List<Account> list = q.list();
			return list;
		} catch (Exception e) {
			throw new RuntimeException(e);
		} finally {
			tx.commit();
			session.close();
		}
	}

	@Override
	public void save(Account 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(Account 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();
			// 先查询对象,然后判断删除
			Object obj = session.get(Account.class, id);
			if (obj != null) {
				session.delete(obj);
			}
		} catch (Exception e) {
			throw new RuntimeException(e);
		} finally {
			tx.commit();
			session.close();
		}
	}

}

  

4,简单使用

List<Account> accounts = new AccountDao().getAll();
		for (int i = 0; i < accounts.size(); i++) {
			Account account = accounts.get(i);
			System.out.println(account.getName());
		}

  

原文地址:https://www.cnblogs.com/yangzigege/p/9477999.html

时间: 2024-10-05 04:55:51

(29)java web的hibernate使用-crud的dao的相关文章

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

(28)java web的hibernate使用

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. ORM: Object Realtion Mapping 一,导入jar包 二,创建数据库,建表 三,创建class,和表的对应关系映射文件 Account.class public class Account { /* 一定要

(30)java web的hibernate使用-c3p0连接池配置

hibernate支持c3p0连接池 需要导入c3p0的jar包 <!-- 配置连接驱动管理类 --> <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> <!-- 配置连接池参数信息 --> <!-- 最小链接数 --> <property name

[原创]java WEB学习笔记95:Hibernate 目录

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

[原创]java WEB学习笔记6:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

Java Web编程的主要组件技术——Hibernate核心组件

参考书籍:<J2EE开源编程精要15讲> Hibernate配置文件 1) hibernate.cfg.xml 1 <?xml version='1.0' encoding='UTF-8'?> 2 <!DOCTYPE hibernate-configuration PUBLIC 3 "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 4 "http://www.hibernate.org/dtd/

[原创]java WEB学习笔记77:Hibernate学习之路---Hibernate 版本 helloword,

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

[原创]java WEB学习笔记64:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) ModelDriven拦截器 paramter 拦截器

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

Hibernate(或其它ORM)里的inverse用法详解,内容摘自Java web轻量级开发面试教程

本文来是从 java web轻量级开发面试教程从摘录的. Inverse的英文含义是反转,在Hibernate中用来决定是由哪方来维护两个业务实体类之间的关联关系,具体而言,就是由哪方去设置这个被外键约束的字段值. 它的默认值是false,也就是说,本端(比如inverse=false写在学生端,那么本端是学生,另外一方是课程)不"反转控制权",这句别扭的话的另外一种说法是,本端维护关联关系.如果两边都不写,那么两端都维护.这样会造成问题,即新时因为两端都控制关系,因此可能会导致重复更