问答文章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

我来回答

4个回答

懂视网 时间: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

这个问题好复杂
建议你到网上看些视频
http://www.verycd.com/topics/93279/
通过hibernate可以反向建表
用面向对象的方式操作对象,从而来操作数据库
HIBERNATE就是一个ORM,是一个JPA的实现框架...
自己慢慢研究吧

热心网友 时间:2022-04-08 04:56

哇,这个问题好大

简单说
@Resource // spring annotation注入
HibernateTemplate ht;

...ht.save(o); 增 // o 为实体,下同
...ht.delete(o); 删
...ht.update(newo); 改
.. O ht.load(O.class,id); 查 O 为类型

hibernate不是传统的关系型,而是对象型...

热心网友 时间:2022-04-08 06:31

你还是下个hibernat教程看看吧,
这个东西不是说就能说明白的。。
如果有什么问题可以百HI,hi我。我天天在线

参考资料:天高云淡(◆ノSimply)

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
梦幻西游我这吸血鬼值多少钱 梦幻西游吸血鬼价格问题,这个吸血鬼能卖多少钱啊?MHB比例100元=500W 给... 诚心求解梦幻西游,我这只吸血鬼能值多少钱?我要个能卖出去的价... 梦幻西游手游,我现在69级,买个79的吸血鬼,可以带吗, 我梦幻西游69J号买了个119级吸血鬼,但是不能摆摊出售,那可以跟别人交易... 梦幻西游手游洗出变异吸血鬼不能摆摊 梦幻西游本人80级 有一只吸血鬼 系统不给摆摊 请问能否交易 和平精英 和平精英封号了能注销掉吗? 梦见想蛇一样的东西掉进下水道 梦见包掉到下水道里 什么是推式供应链和拉式供应链,他们的优缺点分别有那些。 华为公司供应链的优缺点- 问一问 推式供应链的优势与劣势 供应链管理的缺点是什么? 身体检查前列腺钙化灶需要注意什么? 前列腺钙化灶需要注意什么呢! 前列腺钙化灶平时需要注意什么? 前列腺钙化灶患者该如何保养呢 前列腺钙化的食疗:可吃哪些食物 得了前列腺钙化平时要注意什么? 男性前列腺钙化应注意什么?有哪些注意事项? 前列腺钙化患者的日常饮食要注意什么 格力空调遥控器换上新电池就没反应了,怎么回事? 格力空调遥控器换了电池用不了,制冷变制热了 空调遥控器换电池后就不行了 在怀孕期间胃里反酸烧心,吃哪些食物可以缓解? 孕晚期胃酸吃什么可以缓解 孕妇吃什么碱性食物有哪些 孕妇胃酸时可利用食物助孕妇排解痛苦,哪些食物比较好呢? 碱性食物有哪些,胃酸的人是不是吃碱性食物好些 供应链管理有哪些特点或优势!我想了解一下~! 供应链管理的优势体现在那些方面 急需一篇&lt;在校大学生创业弊大于利&gt;一辩的发言稿 ≡八节致词400字 急! 刘积仁的艰难创业 如何做天下那么大的生意? 哪位知道2009山东省事业考试中说要考综合写作是怎么回事? 中方正式提出了加入CPTPP的申请,加入CPTPP有啥好处? 中方正式提出申请加入CPTPP,CPTPP是什么? 中国应该担心 CPTPP吗?为什么? 我国加入cptpp的利弊有哪些? 加入CPTPP对中国来说,会有哪些好处? 中国表态将加入CPTPP,这会给中国带来什么影响? 中国表示将积极考虑加入CPTPP,CPTPP是什么? cptpp是什么组织的简称? 中国表态将加入CPTPP,这会带来什么影响? 如何看待中国将积极考虑加入CPTPP这件事? 如何看待中国对加入 CPTPP 持积极开放态度? 加入C P P P P与当时加入WTO有什么相似 cptpp签约国经济合作与贸易已经在运转了吗