问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎么用hibernate对数据库增删改查

发布网友 发布时间:2022-04-08 02:09

我来回答

2个回答

懂视网 时间:2022-04-08 06:30

配置过程省略。

数据库连接的公共类HibernateUtils.java

package test.hibernate.dao;

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

public class HibernateUtils {

	private static SessionFactory sessionFactory;

	static {
		// Configuration configuration=new Configuration();
		// configuration.configure();//读取默认的文件hibernate.cfg.xml
		// // configuration.configure("hibernate.cfg.xml");读取指定文件
		// sessionFactory=configuration.buildSessionFactory();
		sessionFactory = new Configuration()//
				.configure()//
				.buildSessionFactory();
	}

	/*
	 * 获得一个全局唯一的SessionFactory
	 * 
	 * @return
	 */

	public static SessionFactory getSessionFactory() {
		return sessionFactory;
	}

	/*
	 * 从全局SessionFactory中打开一个Session
	 */
	public static Session openSession() {
		return sessionFactory.openSession();
	}

	public static void setSessionFactory(SessionFactory sessionFactory) {
		HibernateUtils.sessionFactory = sessionFactory;
	}

}

QueryResult.java

package test.hibernate.dao;

import java.util.List;

public class QueryResult {

	private int count;
	private List list;

	public QueryResult(int count, List list) {
		this.count = count;
		this.list = list;
	}

	public int getCount() {
		return count;
	}

	public void setCount(int count) {
		this.count = count;
	}

	public List getList() {
		return list;
	}

	public void setList(List list) {
		this.list = list;
	}

}
业务实现类UserDao.java
package test.hibernate.dao;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import test.hibernate.domain.User;

/**
 * @author LinDL
 * 
 */
public class UserDao {

	public void save(User user) {
		Session session = HibernateUtils.openSession();
		Transaction transaction = null;
		try {
			transaction = session.beginTransaction();
			session.save(user);
			transaction.commit();
		} catch (RuntimeException e) {
			// TODO: handle exception
			transaction.rollback();
			throw e;
		} finally {

		}
		session.close();
	}

	public void update(User user) {
		Session session = HibernateUtils.openSession();
		Transaction transaction = null;
		try {
			transaction = session.beginTransaction();
			session.update(user);
			transaction.commit();
		} catch (RuntimeException e) {
			// TODO: handle exception
			transaction.rollback();
			throw e;
		} finally {

		}
		session.close();
	}

	public void delete(int id) {
		Session session = HibernateUtils.openSession();
		Transaction transaction = null;
		try {
			transaction = session.beginTransaction();
			User user = (User) session.get(User.class, id);// 要先获取到实体对象
			session.delete(user);// 删除的是实体对象
			transaction.commit();
		} catch (RuntimeException e) {
			// TODO: handle exception
			transaction.rollback();
			throw e;
		} finally {

		}
		session.close();
	}

	/**
	 * @param id
	 * @return
	 */
	public User getById(int id) {
		Session session = HibernateUtils.openSession();
		Transaction transaction = null;
		try {
			transaction = session.beginTransaction();
			User user = (User) session.get(User.class, id);
			transaction.commit();
			return user;
		} catch (RuntimeException e) {
			// TODO: handle exception
			transaction.rollback();
			throw e;
		} finally {
			session.close();
		}
	}

	/**
	 * @return
	 */
	public List<User> findAll() {
		Session session = HibernateUtils.openSession();
		Transaction transaction = null;
		try {
			transaction = session.beginTransaction();
			// 使用HQL查询
			// List<User> all = session.createQuery("from User").list();
			// 使用面向对象的方式查询
			Criteria criteria = session.createCriteria(User.class);
			// criteria.add(Restrictions.eq("id", 5));// 添加限制条件,查询id等于5的记录
			// criteria.add(Restrictions.ge("id", 6));//
			// 查询id大于等于6的记录,lt表小于,le表小于等于
			// criteria.addOrder(Order.asc("id"));// 添加排序条件

			List<User> all = criteria.list();

			transaction.commit();
			return all;
		} catch (RuntimeException e) {
			// TODO: handle exception
			transaction.rollback();
			throw e;
		} finally {
			session.close();
		}
	}

	/**
	 * @param firstResult
	 * @param maxResult
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public QueryResult findAll(int firstResult, int maxResult) {
		Session session = HibernateUtils.openSession();
		Transaction transaction = null;
		try {
			transaction = session.beginTransaction();
			// 使用HQL查询
			// Query query = (Query) session.createQuery("from User");
			// query.setFirstResult(firstResult);
			// query.setMaxResults(maxResult);
			// List<User> all = query.list();
			List<User> all = session.createQuery("from User")
					.setFirstResult(firstResult)//
					.setMaxResults(maxResult)//
					.list();

			// 查询总记录数
			Long count = (Long) session
					.createQuery("select count(*) from User").uniqueResult();
			transaction.commit();

			return new QueryResult(count.intValue(), all);
		} catch (RuntimeException e) {
			// TODO: handle exception
			transaction.rollback();
			throw e;
		} finally {
			session.close();
		}
	}
}
测试类

package test.hibernate.dao;

import static org.junit.Assert.*;

import java.util.List;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import test.hibernate.domain.User;

public class UserDaoTest {

	UserDao userDao = new UserDao();

	@Test
	public void testSave() {
		User user = new User();
		// user.setName("张三");
		// userDao.save(user);
		for (int i = 1; i < 30; i++) {
			user.setId(i);
			user.setName("test" + i);
			userDao.save(user);
		}
	}

	@Test
	public void testUpdate() {
		User user = userDao.getById(2);
		user.setName("历史");
		userDao.update(user);
	}

	@Test
	public void testDelete() {
		userDao.delete(2);
	}

	@Test
	public void testGetById() {
		User user = userDao.getById(1);
		System.out.println(user);
	}

	@Test
	public void testFindAll() {
		List<User> list = userDao.findAll();
		for (User user : list) {
			System.out.println(user);
		}
	}

	@Test
	public void testFindAllIntInt() {
		// QueryResult queryResult = userDao.findAll(0, 10);
		// QueryResult queryResult=userDao.findAll(10, 10);
		QueryResult queryResult = userDao.findAll(20, 10);
		System.out.println("总记录数" + queryResult.getCount());
		for (Object user : queryResult.getList()) {
			System.out.println(user);
		}
	}

}


版权声明:本文为博主原创文章,未经博主允许不得转载。转载请注明出处http://blog.csdn.net/lindonglian

Hibernate之实现数据库的基本操作

标签:

热心网友 时间:2022-04-08 03:38

Hibernate对于数据库表的操作
首先,我们要对Hibernate在eclipse环境下进行布局配置。 详情请看Hibernate配置。
其次,我们了解几个查询的用法。
一、Criteria Query
Criteria Query通过面向对象化的设计,将数据查询条件封装为一个对象,换句话讲Criteria Query可以看作是传统SQL的对象化表示。如: Criteria criteria = session.createCriteria(TUser.class);
criteria.add(Expression.eq(“name”,”Erica”));
criteria.add(Expression.eq(“sex”,new Integer(1)));
1. Criteria查询表达式
Criteria本身只是一个查询器,具体的查询条件需要通过Criteria.add方法添加到Criteria实例中。 如前面的例子所示,Expression对象具体描述了查询条件。针对SQL语法,Expression提供了对应的查询限定机制。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
win7不能浏览网页,但用搜狗浏览器高速模式能上网,兼容就不行???求 ... ...64位 IE浏览器无法打开网页 搜狗浏览器可以打开 类似的新窗口网页都... 千牛工作台子账号怎么开权限?子账号的安全设置在哪里? 千牛怎么设置子账号-千牛设置子账号步骤 怎么把CD里的歌曲改成MP3格式? ...戴眼镜吗?想给孩子去检查一下,哪里比较推荐,渭南这块的 Windows Media Player将CD音乐转换为MP3 最简单的方法将CD转换为MP3音频文件(一步一步教你将CD音乐转换为MP3格 ... 孩子最近视力下降了有可能是近视吗?渭南哪里可以免费检查视力啊 奥运会跳远世界纪录 中戏表演成绩已出,哪几个明星的成绩非常不错? 请问 孩子脚上长了好几个鸡眼,该怎么办,看着孩子疼很难受,有那位医生知道解决的方法,谢谢! 刘烨 夏雨 袁泉 他们是中戏哪届学生,同班的学生还有哪些 脚上长了鸡眼,12岁小男孩,有2、3年了,不痛不痒,一直没去医院看,请问该怎么治疗? 如何去除鸡 历届中戏北电第一的明星艺考生都有谁? 娱乐圈毕业于中戏的明星有哪些? 很多明星都是中戏96级表演系出来的,你知道的明星有几个呢? 姚景元中戏表演专业全国第三,中戏毕业的明星你知道都有谁? 都说中戏出明星,很多明星都毕业于中戏,那你知道中戏毕业的明星都有谁吗? 如何用Photoshop或其他软件设计宣传册封面 版型见下图,谢大家~ 急!!!用PS制作宣传册,就是像书一样翻页的那种!! 我姓富,是满族旗人。听祖上说姓富察氏,住在北京东南四环。请问:我的祖上属于什么旗?祖籍地在哪里? 数字杂说(卞毓麟)内容简介,谢谢 菏泽中黄口毓麟妇儿医院怎么样? 杭州毓麟电子商务有限公司怎么样? ps手册封面制作 无锡市毓麟化工产品有限公司怎么样? 用ps作宣传册的封面,新建应该怎么调参数 求口令红包的文字读音 数字杂说的中心思想是什么??? 一个电灯用两个开关控制怎样按装?线路表示。 为什么拼多多商品我设置了拼单购买的商品,买家可以直接购买不需要拼单就能享受拼单价格 为什么微博有的分组的微博刷新不了 星空微尘和拼多多需要拼单成功才能购买商品吗? 手机新浪微博客户端就一个分组微博刷不出来。。为啥??其他分组都能刷?怎么办 商标转让提交申请后还可以撤回吗? 微博里我关注了一个人,他的动态在我的分好的分组里有一些是显示不出来的。 文件夹在哪里设置 为什么我微博关注的某一个分组突然刷不出新微博了?别的分组都是正常的 别的微博ID也全都是正常的 只 请问我在让路网购买的商标,已经提交了商标转让,商标转让可以撤回吗? 昨天拿手机更新新浪微博后 分组里的微博刷新不出来 怎么办QAQ 商标转让出了转让公证书还可以反悔吗 新浪微博里名人明星那个分组刷不出新微博 商标转让可以撤回或终止吗 商标转让可以撤销吗?撤销商标转让意思是什么? 手机版微博首页刷不出来!其他的分组可以刷出!刷首页时总是显示去关注一些人什么的! 银行开户被拒的原因有哪些? 商标转让文件提交国家商标局后能撤回吗? 手机一刷新微博分组就停止,新浪微博的 什么情况银行拒绝开户