20151218Hibernate增删改查

Hibernate增删改查


持久化对象的状态

Hibernate持久化对象有三种状态:

1. 瞬态

new出来的对象未与session关联的对象处于瞬态

2. 持久化

对象与session关联后即处于持久化状态,持久化的对象在数据库中有对应的记录.对对象的操作会反映在数据库中.

3. 脱管

对象成精处于持久化状态,当对应的session关闭后对象处于脱管状态.如果重新让此对象与session关联,则对象又会进入到持久化状态,同时在脱管期间发生的改变不会丢失,也会写入到数据库中.

增删改查

1. 增加一条数据

save()方法
saveOrUpdate()方法
当处于瞬态的对象被save之后就会在数据库中增加一条对应的记录.

public int addUser(User user)
    {
        int toReturn = 0;

        //加载配置
        Configuration cfg = new Configuration().configure();
        //获取sessionFactory
        SessionFactory sf = cfg.buildSessionFactory();
        //创建session
        Session sess = sf.openSession();
        //开启事务
        Transaction ts = sess.beginTransaction();
        //添加一条数据
        toReturn = (Integer) sess.save(user);
        //commit事务
        ts.commit();
        //关闭资源
        sess .close();
        sf.close();

        return toReturn;
    }

2. 查找(加载)一条数据

load()方法,get()方法
load没有匹配的记录会抛出异常,get方法则会返回null

    /**
     * 通过id查找用户,如果没查到对应用户信息则返回null
     * @param id 要查找的Id
     * @return  查找到的用户信息
     */
    public User findUserById(int id)
    {
        User user = null;

        // 加载配置
        Configuration cfg = new Configuration().configure();
        // 获取sessionFactory
        SessionFactory sf = cfg.buildSessionFactory();
        // 创建session
        Session sess = sf.openSession();
        // 开启事务
        Transaction ts = sess.beginTransaction();
        // 查找一条数据
        //toReturn = (Integer) sess.save(user);
        user = sess.get(User.class, id);
        // commit事务
        ts.commit();
        // 关闭资源
        sess.close();
        sf.close();
        return user;
    }

3. 修改一条数据

先加载,然后对返回的对象修改即可.

/**
     * 修改用户信息
     * 
     * @param user
     *            要修改的用户信息
     * @return 是否修改成功
     */
    public boolean alterUser(User user)
    {
        int id = user.getId();
        boolean flag = false;
        User user2 = null;
        // 加载配置
        Configuration cfg = new Configuration().configure();
        // 获取sessionFactory
        SessionFactory sf = cfg.buildSessionFactory();
        // 创建session
        Session sess = sf.openSession();
        // 开启事务
        Transaction ts = sess.beginTransaction();
        // 查找一条数据
        // toReturn = (Integer) sess.save(user);
        user2 = sess.get(User.class, id);
        if (user2 != null)
        {
            user2.setPassword(user.getPassword());
            user2.setUserName(user.getUserName());
            flag = true;
        }
        // commit事务
        ts.commit();
        // 关闭资源
        sess.close();
        sf.close();
        return flag;
    }

4. 删除一条数据

先加载,然后用delete()方法删除返回的对象即可

    /**
     * 删除一条用户信息
     * @param id 要删除的用户信息的id
     * @return  是否删除成功
     */
    public boolean deleteUser(int id)
    {
        boolean flag = false;
        User user2 = null;
        // 加载配置
        Configuration cfg = new Configuration().configure();
        // 获取sessionFactory
        SessionFactory sf = cfg.buildSessionFactory();
        // 创建session
        Session sess = sf.openSession();
        // 开启事务
        Transaction ts = sess.beginTransaction();
        // 查找一条数据
        // toReturn = (Integer) sess.save(user);
        user2 = sess.get(User.class, id);
        if (user2 != null)
        {
            sess.delete(user2);
            flag = true;
        }
        // commit事务
        ts.commit();
        // 关闭资源
        sess.close();
        sf.close();
        return flag;
    }

你可能感兴趣的:(ORM框架,hibernate,数据库,javaEE,框架)