如下:1).描述关键字native和transient的作用或特点,以及相对应的使用场合。
2).尽管抽象类和接口有比较多的相似点,但它们分别用在什么情况下效果更佳?(最好能分别举个最恰当的例子)
3).为什么Hibernate不能对含有Clob(等大字段)的实体进行二级缓存的配置?

解决方案 »

  1.   

    1,native是方法修饰符。Native方法是由另外一种语言(如c/c++,FORTRAN,汇编)实现的本地方法。一般用于JNI中。 
    public class testdll  
    {  
    static  
    {  
    System.loadLibrary("test");  
    }  
        public native static int get();  
        public native static void set(int i);  
        public static void main(String[] args)  
        {  
    testdll test = new testdll();  
    test.set(10);  
    System.out.println(test.get());  
    }  
    }  
    2,transient 
    transient是一个变量修饰符,标记为transient的变量,在对一个对象进行序列化时,这些变量状态不会被序列化。 
    例如,假设某个类的成员变量是transient,那么当通过ObjectOutputStream把这个类的某个实例保存到磁盘上时,实际上transient变量的值是不会保存的。 
    当对象序列化的保存在存储器上时,不希望有些字段数据被保存,为了保证安全性,可以把这些字段声明为transient。 
    要更明白,可以看一些序列化的内容。 
      

  2.   

    3.不仅是hib,自己写程序也不会去缓存一大堆LOB吧?个人觉得一是占内存,二是对LOB的操作都比较慢,真要操作会先进行预处理的,比如要查clob,会先考虑建全文索引。比如要blob的某些段,会先把这些段提取出来另外存。当然咯,除非你的内存够大,大到可以把内存当硬盘用但可能还是解决不了查询的性能问题,经过预处理的比每次全部重新扫描的数据处理肯定要快不。。个人见解。
      

  3.   

    1 和 3 有人已经说得很好了,我说一下对2的看法,不一定对。
    接口是功能的描述,是规范,一组接口集就可以很生动的描述某个(类)事物应当具有什么样的行为。例如:Sun是jsp/sertlet规范的制订者,它怎么体现它对该规范的掌控呢?它出一套关于servlet的接口就可以了。那么下游厂商需实现这套servlet接口才能说自己符合servlet规范.另一个例子, 你可以看一下aopalliance,aop联盟,它们制定了一套关于aop的规范, 里面都是接口. 
    抽象类是实现层面的东西, 抽象类的编写者认为, 他这个类的有些功能他可以确定, 但是有些功能他没法确定, 需要留给后人根据现实的需求来完善.