此贴包含了我大部分的疑问,但现在分不够、只有补分、存满300分结贴.希望知道的朋友给予解答在此先谢过!!!理解如下,但不知是否完全理解,望高人给予指导,先表示感谢:抽象类:
被关键字abstact修饰的类叫抽象类,无法被实例化,只能指向子类对象的引用,在抽象类中方法被abstact修饰后,那么叫做抽象方法,不能有方法体,其子类继承抽象类后必须实现抽象方法,在抽象类中可以定义普通的方法,可有方法体,其子类继承抽象类后可以不重载普通方法.接口:
接口与抽象类一样无法实例化,只能指向实现接口的类对象的引用,在接口中定义的属性必须为静态,默认也为静态,接口中定义的方法不能有方法体,其 实现接口的类必须实现所有定义在接口中的方法.问题:*(自己看书没看明白!越看越晕!希望高手用白话文给我解答下)1、Hibernate中一级缓存与二级缓存概念不太明白望高人指教?
2、Hibernate为什么不适合用批量处理?
3、什么是Hibernate延迟加载?概念!
4、Hibernate工作原理?
被关键字abstact修饰的类叫抽象类,无法被实例化,只能指向子类对象的引用,在抽象类中方法被abstact修饰后,那么叫做抽象方法,不能有方法体,其子类继承抽象类后必须实现抽象方法,在抽象类中可以定义普通的方法,可有方法体,其子类继承抽象类后可以不重载普通方法.接口:
接口与抽象类一样无法实例化,只能指向实现接口的类对象的引用,在接口中定义的属性必须为静态,默认也为静态,接口中定义的方法不能有方法体,其 实现接口的类必须实现所有定义在接口中的方法.问题:*(自己看书没看明白!越看越晕!希望高手用白话文给我解答下)1、Hibernate中一级缓存与二级缓存概念不太明白望高人指教?
2、Hibernate为什么不适合用批量处理?
3、什么是Hibernate延迟加载?概念!
4、Hibernate工作原理?
参看: http://blog.csdn.net/caoyinghui1986/archive/2008/04/20/2308993.aspx2,Hibernate为什么不适合用批量处理?
举个例子: 假设要将一道考试题目出错了,要将所有的学生(100个)的分数加 5 分 ,如果用Hibernate 的处理方式就是
将这一百个学生一一加载到 Session 中 然后 对每个学生 进行修改 ,也就是要执行 200 条SQL , 如果直接用 JDBC
就是 update student set score = score + 5 一条SQL 就搞定了, 不知道这样说你能不能理解.3、什么是Hibernate延迟加载?概念!
简单的说就是当加载一个对象,而这个对象没有被访问的时候,就不会执行 SQL .
参看 :http://blog.csdn.net/caoyinghui1986/archive/2008/04/19/2307862.aspx
4、Hibernate工作原理?
这个问题Baidu一下应该会有满意的答案.
---------------------------------------------------------------------------------------------
Session负责执行被持久化的对象与数据库之间的交流,Session是非线程安全的.这个Session不同于HttpSession的Session对象.SessionFactory负责完成Hibernate的初始化工作,充当存储源的代理.并且负责创建Session对象.这里使用了工厂设计模式.它不是轻量级的.当需要创建多个数据库的时候可以创建多个SessionFactory.Configuration负责配置和启动Hibernate和创建SessionFactory对象.在启动过程中,它的实例首先找映射文档的位置,然后读取配置.然后创建SessionFactory对象.Transaction负责事务相关的操作.是可选的,开发人员可以自己设计编写底层的事务代码.Query和Criteria接口负责执行各种数据库查询工作.可以使用HQL或则SQL查询方式.还有一个QBC查询方式
读取Hibernate 的配置信息-〉创建Session Factory
1)创建Configeration类的实例。
它的构造方法:将配置信息(Hibernate config.xml)读入到内存。
一个Configeration 实例代表Hibernate 所有Java类到Sql数据库映射的集合。
2)创建SessionFactory实例
把Configeration 对象中的所有配置信息拷贝到SessionFactory的缓存中。
SessionFactory的实例代表一个数据库存储员源,创建后不再与Configeration 对象关联。
缓存(cache):指Java对象的属性(通常是一些集合类型的属性--占用内存空间。
SessionFactory的缓存中:Hibernate 配置信息。OR映射元数据。
缓存-大:重量级对象 小:轻量级对象
3)调用SessionFactory创建Session的方法
1】用户自行提供JDBC连接。
Connection con=dataSource.getConnection();
Session s=sessionFactory.openSession(con);
2】让SessionFactory提供连接
Session s=sessionFactory.openSession();
4)通过Session 接口提供的各种方法来操纵数据库访问。
Hibernate 的缓存体系
一级缓存:
Session 有一个内置的缓存,其中存放了被当前工作单元加载的对象。
每个Session 都有自己独立的缓存,且只能被当前工作单元访问。
二级缓存:
SessionFactory的外置的可插拔的缓存插件。其中的数据可被多个Session共享访问。
SessionFactory的内置缓存:存放了映射元数据,预定义的Sql语句。 Hibernate 中Java对象的状态
1.临时状态 (transient)
特征:
1】不处于Session 缓存中
2】数据库中没有对象记录
Java如何进入临时状态
1】通过new语句刚创建一个对象时
2】当调用Session 的delete()方法,从Session 缓存中删除一个对象时。 2.持久化状态(persisted)
特征:
1】处于Session 缓存中
2】持久化对象数据库中设有对象记录
3】Session 在特定时刻会保持二者同步
Java如何进入持久化状态
1】Session 的save()把临时-》持久化状态
2】Session 的load(),get()方法返回的对象
3】Session 的find()返回的list集合中存放的对象
4】Session 的update(),saveOrupdate()使游离-》持久化
3.游离状态(detached)
特征:
1】不再位于Session 缓存中
2】游离对象由持久化状态转变而来,数据库中可能还有对应记录。
Java如何进入持久化状态-》游离状态
1】Session 的close()方法
2】Session 的evict()方法,从缓存中删除一个对象。提高性能。少用。
4抽象类和接口中的方法必须在它的被继承和并监听的类中实现5抽象类的实例化不能用 new来实现比如 Father f=new Father();//错误
Father f; //true
Son s=(Son)fangfa();//fangfa()是父类实现的类
学好继承,覆盖,接口,方法等,是java的关键,也是java独有的性质
一级缓存是session级也就是事务级的缓存,而二级缓存是应用程序级的缓存,整个应用程序中起作用,你多写点代码就明白到底是怎么回事了。
群(19389265) JAVA之家,欢迎喜欢JAVA的朋友加
推荐著名的白皮书 深入浅出HIbernate 绝对让你深入了解到hibernate的运转机制
抽象,所以父类和子类本质上是一致的。而对于接口,只是说明实现的类具备这种行为。至于java为什么是单继承的期待下面有人给出解答。