美文网首页
Hibernate常见问题

Hibernate常见问题

作者: 菜鸟程序员一枚 | 来源:发表于2019-01-20 10:08 被阅读47次

    1.update和saveOrUpdate的区别?
    update()方法操作的对象必须是持久化了的对象。也就是说,如果此对象在数据库中不存在的话,就不能使用update()方法。
    saveOrUpdate()方法操作的对象既可以使持久化了的,也可以使没有持久化的对象。如果是持久化了的对象调用saveOrUpdate()则会 更新数据库中的对象;如果是未持久化的对象使用此方法,则save到数据库中。
    2.hibernate的三种状态之间如何转换
    瞬时状态:比如new出来的对象,还没有被持久化【没有保存在数据库中】
    游离状态:当调用session的save/saveOrUpdate/get/load/list等方法的时候,对象就是持久化状态
    持久状态:当Session关闭了以后,持久化的对象就变成了游离状态了...
    3.get和load的区别?
    get()立即查询
    load()懒加载
    4.persist和save的区别?
    persist不保存立即执行,可能要等到flush;
    persist不更新缓存

    5.Hibernate基本流程

    //1. 创建一个 SessionFactory 对象
            ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().configure().build();  
            SessionFactory sessionFactory = new MetadataSources(serviceRegistry)  
                    .buildMetadata().buildSessionFactory();
          //2. 创建一个 Session 对象
            Session session = sessionFactory.openSession(); 
          //3. 开启事务
            Transaction transaction = session.beginTransaction();  
            customer s = new customer("55", "小红");  
          //4. 执行保存操作
            session.save(s);
          //5. 提交事务 
            transaction.commit(); 
          //6. 关闭 Session
            session.close();
          //7. 关闭 SessionFactory 对象
            sessionFactory.close();
    

    6.Hibernate的五个核心接口
    Configuration 接口:配置Hibernate,根据其启动hibernate,创建
    SessionFactory 对象;
    SessionFactory 接口:初始化Hibernate,充当数据存储源的代理,创建
    session 对象,sessionFactory 是线程安全的,意味着它的同一个实例可以被应
    用的多个线程共享,是重量级、二级缓存;
    Session 接口:负责保存、更新、删除、加载和查询对象,是线程不安全的,
    避免多个线程共享同一个session,是轻量级、一级缓存;
    Transaction 接口:管理事务;
    Query 和Criteria 接口:执行数据库的查询。

    7.缓存机制
    一级缓存:
    Hibenate中一级缓存,也叫做session的缓存,它可以在session范围内减少数据库的访问次数! 只在session范围有效! Session关闭,一级缓存失效!
    二级缓存:
    二级缓存是基于应用程序的缓存,所有的Session都可以使用
    Hibernate提供的二级缓存有默认的实现,且是一种可插配的缓存框架!如果用户想用二级缓存,只需要在hibernate.cfg.xml中配置即可; 不想用,直接移除,不影响代码。

    相关文章

      网友评论

          本文标题:Hibernate常见问题

          本文链接:https://www.haomeiwen.com/subject/nkytjqtx.html