编写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层简单代码的主要内容,如果未能解决你的问题,请参考以下文章

Generic Hibernate DAO

SSH框架整合中Hibernate实现Dao层常用结构

SSH 项目中 用Hibernate底层 简单的封装DAO层

SSHhibernate持久层模板于事务管理

[转]JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分

Hibernate 干货