Hibernate(二)实现数据库的基本操作及相关api
来源:互联网 发布:女人之间的嫉妒知乎 编辑:程序博客网 时间:2024/05/19 19:12
配置过程省略。
数据库连接的公共类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 exceptiontransaction.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 exceptiontransaction.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 exceptiontransaction.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 exceptiontransaction.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 exceptiontransaction.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 exceptiontransaction.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();@Testpublic 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);}}@Testpublic void testUpdate() {User user = userDao.getById(2);user.setName("历史");userDao.update(user);}@Testpublic void testDelete() {userDao.delete(2);}@Testpublic void testGetById() {User user = userDao.getById(1);System.out.println(user);}@Testpublic void testFindAll() {List<User> list = userDao.findAll();for (User user : list) {System.out.println(user);}}@Testpublic 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);}}}
Configuration 配置
configure()
configure(String resource)
addResource(String resource)导入一个指定位置的映射文件
addClass(Class clazz)导入与指定类同一个包中的以类名为前缀,后缀为.hbm.xml的映射文件
buildSessionFactory()
SessionFactory Session工厂
openSession()
getCurrentSession()
close()
Session 很重要的一个对象
操作对象的方法
save(Object)
update(Object)
delete(Object)
查询的方法
createQuery(String)--> Query
createCriteria(Class)
管理事务的方法
beginTransaction() --> Transaction
getTransaction() --> Transaction获取当前Session中关联的事务对象
其他的方法
...
Transaction 事务
commit()
rollback()
Query 查询
list() 查询一个结果集合。
uniqueResult()查询一个唯一的结果,如果没有结果,则返回null,如果结果有多个,就抛异常。
...
原文出处:http://blog.csdn.net/lindonglian/article/details/46858451
0 0
- Hibernate(二)实现数据库的基本操作及相关api
- 数据库及相关基本操作
- MongoDB数据库的基本操作(二)
- Hibernate入门(二)之相关API
- vs2010连接access数据库及数据表基本操作(二)
- SQLite数据库操作二(安卓API实现)
- mysql数据库应用(二)----数据库的基本操作
- 二叉树学习(二):二叉树的基本操作及代码实现
- (二)双链表的构造及相关操作
- MySQL入门篇(二)数据库的基本操作
- Unity各类数据库的基本操作(二)-- CSV
- SQLite数据库对数据的基本操作(二)
- Git版本管理之旅(二)—— Git基本操作流程及相关命令
- 学习二:MySql数据库的基本操作
- MySQL 学习<二> 数据库的基本操作
- Hibernate数据库操作基本实例
- Oracle数据库的基本操作及使用
- Hive数据库及表的基本操作
- 个人用的前端保存路径
- Android中友盟统计,用户反馈,在线升级配置概述
- C++代码效率提升工具
- 水墨大写意笔法模拟简易方法
- php多字节编码字符长度检测
- Hibernate(二)实现数据库的基本操作及相关api
- 【简易版】IOS仿periscope自制狂赞飘桃心
- arcgis TextSymbol 换行问题
- Java中equals和==的区别
- 关于highcharts的中文导出问题
- ScheduledExecutorService中scheduleAtFixedRate方法的同步
- Java Map集合解析
- undefied
- 简易的IOS位置定位服务