hibernate的get()和load()介绍一

来源:互联网 发布:六次人口普查数据 编辑:程序博客网 时间:2024/06/08 16:56

hibernate作为一个开源的轻量级的mvc的数据持久层框架,对jdbc进行了细致的封装,让使用更加简单,是程序员更加可以注重对业务逻辑的编写.但是,因为hibernate在采用的面向对象的编程,是我们在编程过程中需要对面向对象的语言进行解析,生成sql语句,然后进行数据的封装耗时比较多.这也体现了hibernate的性能是不如jdbc和mybatis的.但是hibernate也进行了性能提升的改进,比如说二级缓存,在比如这里说get()和load().

好的,这里对hibernate做了一个大体的介绍,那么现在进入正题,对get()和load()的讨论.
get()和load()作为加载的方法,实现的功能是一样的,但是他们存在的是效率的问题,也就是说在什么情况下需要时那个方法.
其实load()和get()的本质区别就是是否用延迟,什么叫延迟?延迟就是你需要的时候在给你进行加载操作,不需要则不加载,由此也体现出了使用延迟对性能的优化,这样可以节约资源,省去不必要的查询出来却不使用的浪费.

那么,get()方法是不适用延迟的,load()方法默认进行延迟操作.当然,我们也可以对load()进行取消延迟的操作(不过,这样就是的load设计的无意义),而且,我们平时大多使用的就是load()的延迟装载.

<class name="DepeModel" table="db_dep" lazy="false">

稍微说下,延迟配置在hibernate的映射文件中的class标签中,lazy就是延迟属性,默认是true,使用了false,就是不适用延迟,那么这个方法和get()是一样的了.
正常load()代码示例:

        public TestModel load(String id){            //这里说明了读取配置文件的hibernate.cfg.xml放在更目录下            //如果想自己设置,需把路劲先写到configure()中            Configuration cfg=new Configuration().configure();            //创建session工厂                           SessionFactorysessionFactory=cfg.buildSessionFactory();            //创建session            Session session=sessionFactory.openSession();            //使用hibernate的load方法加载            test=session.load(TestModel.class, id);            session.close();            return test;        }

使用中我们有一个这样的问题,那就是,加入session关闭了,那么这个时候我们需要用load()查询了,怎么办?
答案是:报错,介绍二会具体讲解!
hibernate的get()和load()介绍二

0 0
原创粉丝点击