码迷,mamicode.com
首页 > 数据库 > 详细

编写hibernate 操作数据库的dao层简单代码

时间:2017-08-22 19:50:17      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:sys   操作   cat   from   exce   hql   blog   hibernate   dal   

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层简单代码

标签:sys   操作   cat   from   exce   hql   blog   hibernate   dal   

原文地址:http://www.cnblogs.com/sovagxa/p/7413169.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!