• 11-hibernate,单表GRUD操作实例


    1,save

    2,update

    3,delete

    4,get/load(查询单个纪录)

    实例代码:

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.sql.Blob;
    import java.util.Date;
    
    import org.hibernate.Hibernate;
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.service.ServiceRegistry;
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    
    
    
    //测试类
    public class StudentsTest {
        
        private SessionFactory sessionFactory;
        private Session session;
        private Transaction transaction;
        @Before
        public void init()
        {
            //创建配置对象
            Configuration config=new Configuration().configure();
            config.addClass(Students.class);//这个需要加上(视频里面没有)
            //创建服务注册对象。
            ServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder()
                    .applySettings(config.getProperties()).build(); //通过config.getProperties()读取配置文档。
            //创建会话工厂对象
            sessionFactory=config.buildSessionFactory(serviceRegistry);
            //创建会话对象
            session=sessionFactory.openSession();
            //开启事务
            transaction=session.beginTransaction();
        }
        @After
        public void destory()
        {
            transaction.commit();//提交事务
            session.close();//关闭会话
            sessionFactory.close();//关闭会话工厂
        }
        
        @Test
        public void testSaveStudents()
        {
            Students s=new Students();
            s.setSname("张三丰");
            s.setGender("男");
            Address address=new Address("710069","0289923282","西安市");
            s.setAddress(address);    
            s.setBirthday(new Date());
            session.save(s);//保存对象进入数据库
        }
        @Test
        //get查询方法
        public void testGetStudents()
        {
            Students s=session.get(Students.class, 1);
            System.out.println(s);
        }
        @Test
        //load查询方法
        public void testLoadStudents()
        {
            Students s=session.load(Students.class, 1);
            System.out.println(s);
        }
        
        @Test
        //更新方法
        public void testUpdateStudents()
        {
            Students s=session.get(Students.class, 1);
            s.setGender("女");
            session.update(s);
        }
        @Test
        //删除方法
        public void testDeleteStudents()
        {
            Students s=session.load(Students.class, 1);
            session.delete(s);
        }
    
    }

    测试结果:

    get

     load

    update

    delete

    get与load区别

    1,get在调用之后离开发送sql语句,不考虑缓存,返回持久化对象。

    2,load方法在调用后返回一个代理对象。

    该代理对象只保存了实体对象的ID,直到使用对象的非主键属性时才会发出sql语句,比如打印输出时候,会调用发出SQL。

    3,如果查询数据库不存在的数据,get方法返回null,load方法抛出异常。

  • 相关阅读:
    【Alpha】技术规格说明书
    【Alpha】第十次Scrum meeting
    【Alpha】第九次Scrum meeting
    【Alpha】第八次Scrum meeting
    【Alpha】第七次Scrum meeting
    【Alpha】特殊情况通知
    S2X环境搭建与示例运行
    [2018福大至诚软工助教]结对作业1测试结果
    机器学习
    机器学习
  • 原文地址:https://www.cnblogs.com/alsf/p/7821720.html
Copyright © 2020-2023  润新知