Hibernate查询uodate-megre-saveorupdate-delete方法使用

Hibernate查询uodate-megre-saveorupdate-delete方法使用

update这个方法的使用1:先加载然后再修改

/**
     * 修改通过get方法获得的持久化对象
     */
    private static void update1() {
        Configuration config = new Configuration().configure();
        ServiceRegistry sr = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
        SessionFactory sessionFactory = config.buildSessionFactory(sr);
        
        Session session = sessionFactory.openSession();
        Transaction tx = session.beginTransaction();
        
        Person p = (Person)session.get(Person.class, 1);
        System.out.println("-update1-修改前--"+p);
        
        p.setName("admin1");
        //如果是一个跟session关联的持久化状态的对象,可以不需要调用update方法,也能够在session.close()前执行更新操作
        session.update(p);
        
        tx.commit();//提交的时候才执行SQL
        session.close();
        System.out.println("---------end--------");
    }

update方法的使用2:

/**
     *  更新通过new 创建的对象
     *  需要注意:
     *  1:id 必须有,并且必须对应数据库表的某一条记录
     */
    private static void update2() {
        Configuration config = new Configuration().configure();
        ServiceRegistry sr = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
        SessionFactory sessionFactory = config.buildSessionFactory(sr);
        
        Session session = sessionFactory.openSession();
        Transaction tx = session.beginTransaction();
        
        Person p = new Person();
        p.setName("mm");

        p.setId(2);        
        System.out.println("--修改前--"+p);
        session.update(p);
        
        tx.commit();//提交的时候才执行SQL
        session.close();
        System.out.println("---------end--------");
    }

megra()方法的使用1:当通过get()方法得到数据的时候,在修改跟update()方法差不多,但是如果用创建对象的方法修改对象,那么数据库不会修改成创建的这个对象,因为new出来的对象就是临时状态,跟数据库还没有关系,只用session关联的时候才会进行修改。

/**
     * 更新操作
     */
    private static void merge2() {
        Configuration config = new Configuration().configure();
        ServiceRegistry sr = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
        SessionFactory sessionFactory = config.buildSessionFactory(sr);
        
        Session session = sessionFactory.openSession();
        Transaction tx = session.beginTransaction();
        Person p1 = new Person();
        p1.setId(1);
        p1.setName("ooo");
        
        System.out.println("merge2--修改前--"+p1);
        //传递给merge方法的p1是一个临时对象,没有跟session进行关联
        //merge方法返回的p2是一个由session持久化管理的持久化对象,所以p2的改变会在session关闭的时候同步到数据库表中
        Person p2 = (Person)session.merge(p1);
         
        System.out.println("p1---"+p1);
        System.out.println("p2---"+p2);
        
        p2.setName("p22");
        p1.setName("p11");
        
        
        System.out.println("-1-p1---"+p1);
        System.out.println("-2-p2---"+p2);
        
        tx.commit();//提交的时候才执行SQL
        session.close();
        System.out.println("---------end--------");
    }
    
    /**
     * 更新操作
     */
    private static void merge() {
        Configuration config = new Configuration().configure();
        ServiceRegistry sr = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
        SessionFactory sessionFactory = config.buildSessionFactory(sr);
        
        Session session = sessionFactory.openSession();
        Transaction tx = session.beginTransaction();
        Person p1 = (Person)session.get(Person.class, 1);
        System.out.println("--修改前--"+p1);
        
        p1.setName("kk2");
        
        Person p2 = (Person)session.merge(p1);
         
        System.out.println("p1---"+p1);
        System.out.println("p2---"+p2);
        
        p2.setName("p2");
        p1.setName("p1");
        
        
        
        System.out.println("-1-p1---"+p1);
        System.out.println("-2-p2---"+p2);
        
        tx.commit();//提交的时候才执行SQL
        session.close();
        System.out.println("---------end--------");
    }

 saveorupdate方法的使用

/**
     * 更新操作
     * saveOrUpdate 方法会根据传递的对象有没有ID来进行新增或者修改操作
     * 有id就是修改
     * 没有id就是新增
     * 如果给定的id没有对应的记录将报错
     */
    private static void saveOrUpdate2() {
        Configuration config = new Configuration().configure();
        ServiceRegistry sr = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
        SessionFactory sessionFactory = config.buildSessionFactory(sr);
        
        Session session = sessionFactory.openSession();
        Transaction tx = session.beginTransaction();
        
        Person p1 = new Person();
        p1.setId(9);
        p1.setName("YYY");
        p1.setPassword(00000);
        p1.setBirthday(new java.util.Date());
        
        session.saveOrUpdate(p1);
    
        tx.commit();//提交的时候才执行SQL
        session.close();
        System.out.println("---------end--------");
    }
    /**
     * 更新操作
     */
    private static void saveOrUpdate() {
        Configuration config = new Configuration().configure();
        ServiceRegistry sr = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
        SessionFactory sessionFactory = config.buildSessionFactory(sr);
        
        Session session = sessionFactory.openSession();
        Transaction tx = session.beginTransaction();
        
        Person p1 = (Person)session.get(Person.class, 1);

        p1.setName("III");
        session.saveOrUpdate(p1);
    
        tx.commit();//提交的时候才执行SQL
        session.close();
        System.out.println("---------end--------");
    }
    

delete方法的使用:

/**
     * 对象删除
     */
    private static void delete2() {
        Configuration config = new Configuration().configure();
        ServiceRegistry sr = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
        SessionFactory sessionFactory = config.buildSessionFactory(sr);
        
        Session session = sessionFactory.openSession();
        Transaction tx = session.beginTransaction();
        Person p = new Person();
        p.setId(2);
        
        session.delete(p);
    
        tx.commit();//提交的时候才执行SQL
        session.close();
        System.out.println("---------end--------");
    }
    
    /**
     * 对象删除
     */
    private static void delete() {
        Configuration config = new Configuration().configure();
        
        ServiceRegistry sr = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
        SessionFactory sessionFactory = config.buildSessionFactory(sr);
        
        Session session = sessionFactory.openSession();
        Transaction tx = session.beginTransaction();
        Person p = (Person)session.get(Person.class, 1);
        
        session.delete(p);
    
        tx.commit();//提交的时候才执行SQL
        session.close();
        System.out.println("---------end--------");
    }
    

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。