此贴包含了我大部分的疑问,但现在分不够、只有补分、存满300分结贴.希望知道的朋友给予解答在此先谢过!!!理解如下,但不知是否完全理解,望高人给予指导,先表示感谢:抽象类:
被关键字abstact修饰的类叫抽象类,无法被实例化,只能指向子类对象的引用,在抽象类中方法被abstact修饰后,那么叫做抽象方法,不能有方法体,其子类继承抽象类后必须实现抽象方法,在抽象类中可以定义普通的方法,可有方法体,其子类继承抽象类后可以不重载普通方法.接口:
接口与抽象类一样无法实例化,只能指向实现接口的类对象的引用,在接口中定义的属性必须为静态,默认也为静态,接口中定义的方法不能有方法体,其 实现接口的类必须实现所有定义在接口中的方法.问题:*(自己看书没看明白!越看越晕!希望高手用白话文给我解答下)1、Hibernate中一级缓存与二级缓存概念不太明白望高人指教?
2、Hibernate为什么不适合用批量处理?
3、什么是Hibernate延迟加载?概念!
4、Hibernate工作原理?

解决方案 »

  1.   

    1、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一下应该会有满意的答案.
      

  2.   

    Hibernate是一个开源的ORM(对象关系映射)框架.是对JDBC的轻量级封装,是编程人员可以通过面向对象的思维来对数据库进行操作.它可以运用在JAVA应用程序和WEB程序中.它基本可以取代EJB2.0中的CMP,完成数据的持久化的重任.Hibernate的5个核型接口: Session SessionFactory Transaction Query 和 Configuration .
    ---------------------------------------------------------------------------------------------
    Session负责执行被持久化的对象与数据库之间的交流,Session是非线程安全的.这个Session不同于HttpSession的Session对象.SessionFactory负责完成Hibernate的初始化工作,充当存储源的代理.并且负责创建Session对象.这里使用了工厂设计模式.它不是轻量级的.当需要创建多个数据库的时候可以创建多个SessionFactory.Configuration负责配置和启动Hibernate和创建SessionFactory对象.在启动过程中,它的实例首先找映射文档的位置,然后读取配置.然后创建SessionFactory对象.Transaction负责事务相关的操作.是可选的,开发人员可以自己设计编写底层的事务代码.Query和Criteria接口负责执行各种数据库查询工作.可以使用HQL或则SQL查询方式.还有一个QBC查询方式
      

  3.   

    关于Hibernate的工作原理主要是以下几点:1.Hibernate 的初始化.
    读取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.   

    1抽象类是用extends来完成继承的,接口是用implement来监听的2抽象类可以在父类定义一个空方法,而在不同的子类中去实现;接口中只是空的方法,你可以把这些方法理解成一个大体的程序架构3抽象类中也可以实现方法,而用子类来覆盖
    4抽象类和接口中的方法必须在它的被继承和并监听的类中实现5抽象类的实例化不能用 new来实现比如 Father f=new Father();//错误
         Father f; //true
         Son s=(Son)fangfa();//fangfa()是父类实现的类
    学好继承,覆盖,接口,方法等,是java的关键,也是java独有的性质
      

  5.   

    建议你买本《Hibernate 开发及整合应用大全》来看看,这书很不错!
      

  6.   

    抽象类与接口方面我就不给你说了,就给你说hibernate的吧
    一级缓存是session级也就是事务级的缓存,而二级缓存是应用程序级的缓存,整个应用程序中起作用,你多写点代码就明白到底是怎么回事了。
      

  7.   

    该说的基本都说了,不再多说什么~关键是多写点东西,自己想想就明白了
    群(19389265) JAVA之家,欢迎喜欢JAVA的朋友加
      

  8.   

    hibernate的话
    推荐著名的白皮书 深入浅出HIbernate 绝对让你深入了解到hibernate的运转机制
      

  9.   

    abstarct class在Java语言中体现了一种继承关系,要想使得继承关系合理,父类和派生类之间必须存在"is a"关系,即父类和派生类在概念本质上应该是相同的。对于interface 来说则不然,并不要求interface的实现者和interface定义在概念本质上是一致的,仅仅是实现了interface定义的契约而已。继承关系里父类是对子类共性的
    抽象,所以父类和子类本质上是一致的。而对于接口,只是说明实现的类具备这种行为。至于java为什么是单继承的期待下面有人给出解答。
      

  10.   

    java是利用接口实现多重继承的,由于接口根本没有实现细节,所以在进行父类与多个接口的合并时,只能有一个类具有细节。由此像C++中多重继承中出现的合并操作复杂,并可能存在同一个方法的两种不同实现存在,由此产生代码冲突的问题就不存在了,增加了代码的可靠性和简单性