Hibernate框架对查询功能优化(1)

2021-06-10 13:05

阅读:523

  • 延迟加载

1. 延迟加载先获取到代理对象,当真正使用到该对象中的属性的时候,才会发送SQL语句,是Hibernate框架提升性能的方式

2. 类级别的延迟加载

  * Session对象的load方法默认就是延迟加载

  * Customer c = session.load(Customer.class, 1L);没有发送SQL语句,当使用该对象   的属性时,才发送SQL语句

  * 使类级别的延迟加载失效

    * 在对象映射文件中标签上配置lazy=”false”

    * Hibernate.initialize(Object proxy);

 

/**
     * 演示类级别的延迟加载
     * 需要使用session.load()方法 ,它默认情况下使用延迟加载
     */
    @Test
    public void run1() {
        //先做一个比较啊
        Session session = HibernateUtils.getCurrentSession();
        Transaction tx = session.beginTransaction();
        Customer customer = session.get(Customer.class, 1L);
        System.out.println("===============================");
        System.out.println(customer.getCust_name());
        tx.commit();
    }
    技术分享/**
     * 使用延迟加载
     */
    @Test
    public void run2() {
        Session session = HibernateUtils.getCurrentSession();
        Transaction tx = session.beginTransaction();
        Customer customer = session.load(Customer.class, 1L);
        System.out.println("===============================");
        System.out.println(customer.getCust_name());
        tx.commit();
    }
技术分享
/**
     * 将延迟加载失效的方式
     * 在标签上配置lazy=”false”
     * Hibernate.initialize(Object proxy);
     */
    @Test
    public void run3() {
        Session session = HibernateUtils.getCurrentSession();
        Transaction tx = session.beginTransaction();
        Customer customer = session.load(Customer.class, 1L);
        //把customer对象初始化
        Hibernate.initialize(customer);
        System.out.println("===============================");
        System.out.println(customer.getCust_name());
        tx.commit();
    }
技术分享


评论


亲,登录后才可以留言!