编写hibernate 操作数据库的dao层简单代码
Posted sovagxa&静默
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写hibernate 操作数据库的dao层简单代码相关的知识,希望对你有一定的参考价值。
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
这个操作数据库的类有5个方法,分别是
public boolean add(User user)//添加数据 public boolean deleteByName(String userName)//通过name来删除 public boolean deleteById(int id)//通过id删除 public boolean update(int id,User user)//将根据id得到的对象更新为user对象的属性值 public List<User> findAll()//查询所有条目
==============================================
一、添加数据方法代码:
public boolean add(User user){ Session session=sessionFactory.openSession(); Transaction transaction=null; try { transaction = (Transaction) session.beginTransaction(); session.save(user); transaction.commit(); return true; } catch (RuntimeException e) { transaction.rollback(); System.out.println("添加失败"); return false; }finally{ session.close(); } }
1、获得session会话
2、开始事务
3、保存对象
4、提交事务
5、若执行正确返回true
6、若为异常则回滚事务,返回false
7、最后关闭会话
================================================
二、通过name字段删除条目
public boolean deleteByName(String userName){ Session session = sessionFactory.openSession(); Transaction transaction=null; try { transaction = session.beginTransaction(); String hql="from User where name=‘"+userName+"‘"; User user=(User) session.createQuery(hql).uniqueResult(); session.delete(user); transaction.commit(); return true; } catch (HibernateException e) { // TODO Auto-generated catch block e.printStackTrace(); return false; }finally{ session.close(); }
}
1、传入name字符
2、写hql语句,注意User是类名,因为hql是面向对象而不是面向数据库
3、通过hql语句取得唯一的对象user,若有多个对象则会抛出异常
4、删除对象
5、提交事务
==================================================================
三、通过id删除条目
public boolean deleteById(int id){ Session session = sessionFactory.openSession(); Transaction transaction=null; try { transaction = session.beginTransaction(); User user=(User) session.get(User.class, id); session.delete(user); transaction.commit(); return true; } catch (HibernateException e) { // TODO Auto-generated catch block e.printStackTrace(); return false; }finally{ session.close(); } }
1、传入参数id
2、开启事务
3、根据id得到对象
4、删除对象
5、提交事务
===================================================
四、根据id更新条目
public boolean update(int id,User user){ Session session = sessionFactory.openSession(); Transaction transaction=null; try { transaction=session.beginTransaction(); User iUser=(User) session.get(User.class, id); iUser.setName(user.getName()); iUser.setNumber(user.getNumber()); iUser.setPassword(user.getPassword()); iUser.setPhone(user.getPhone()); session.update(iUser); transaction.commit(); return true; } catch (Exception e) { // TODO: handle exception System.out.println("更新失败"); transaction.rollback(); // throw e; return false; }finally{ session.close(); } }
1、根据id得到item中的iuser对象
2、将user参数的属性传入iuser
3、将iuser更新
4、提交事务
=================================================================
五、查询所有条目
public List<User> findAll(){ Session session = sessionFactory.openSession(); Transaction transaction=null; try { transaction= session.beginTransaction(); List<User> list= session.createCriteria(User.class).list();
// List<User> list=session.createQuery("from User").list();//hql方式 transaction.commit(); return list; } catch (Exception e) { // TODO: handle exception System.out.println("获取失败"); transaction.rollback(); return null; }finally{ session.close(); } }
1、开启事务
2、两种查询方式获得User的list
3、返回list
==============================================
==============================================
注意:
1、hql是面向对象的语句
2、一定要在事务中操作数据库
3、catch里面产生异常一定要回滚操作
4、要提交事务,否则不生效
5、一定要关闭会话资源
以上是关于编写hibernate 操作数据库的dao层简单代码的主要内容,如果未能解决你的问题,请参考以下文章
SSH 项目中 用Hibernate底层 简单的封装DAO层