答:Hibernate的Session提供了一级缓存的功能,默认总是有效的,当应用程序保存持久化实体、修改持久化实体时,Session并不会立即把这种改变提交到数据库,而是缓存在当前的Session中,除非显示调用了Session的flush()方法或通过close()方法关闭Session。通过一级缓存,可以...
答:通过Hibernate实现分页查询,开发人员只需要提供HQL语句(调用Session的createQuery()方法)或查询条件(调用Session的createCriteria()方法)、设置查询起始行数(调用Query或Criteria接口的setFirstResult()方法)和最大查询行数(调用Qu...
答:Session加载实体对象的步骤是:①Session在调用数据库查询功能之前,首先会在一级缓存中通过实体类型和主键进行查找,如果一级缓存查找命中且数据状态合法,则直接返回;②如果一级缓存没有命中,接下来Session会在当前NonExists记录(相当于一个查询黑名单,如果出现重复的无效查询可以迅速做出判断...
答:主要有以下三项区别:①如果没有找到符合条件的记录,get方法返回null,load方法抛出异常。②get方法直接返回实体类对象,load方法返回实体类对象的代理。③在Hibernate3之前,get方法只在一级缓存中进行数据查找,如果没有找到对应的数据则越过二级缓存,直接发出SQL语句完成数据读取;load...
1)方法区(method):被所有的线程共享。方法区包含所有的类信息和静态变量。2)堆(heap):被所有的线程共享,存放对象实例以及数组,Java堆是GC的主要区域。3)栈(stack):每个线程包含一个栈区,栈中保存一些局部变量等。4)程序计数器:是当前线程执行的字节码的行指示器。
匿名内部类也就是没有名字的内部类,匿名内部类只能使用一次,它通常用来简化代码编写。匿名内部类只能访问外部类的Final变量.Java8更加智能:如果局部变量被匿名内部类访问,那么该局部变量相当于自动使用了final修饰。
重载和重写都允许你用相同的名称来实现不同的功能,但是重载是编译时活动,而重写是运行时活动。你可以在同一个类中重载方法,但是只能在子类中重写方法。重写必须要有继承重写:1、在子类中可以根据需要对从基类中继承来的方法进行重写。2、重写的方法和被重写的方法必须具有相同方法名称、参数列表和返回类型。3、重写方法不能使用...
抽象类是指不允许被实例化的类;一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。abstractclass和interface所反映出的设计理念不同。其实abstractclass表示的是"is-a"关系,interface表示的是"like-a"...
Comparable接口用于定义对象的自然顺序,是排序接口,而comparator通常用于定义用户定制的顺序,是比较接口。我们如果需要控制某个类的次序,而该类本身不支持排序(即没有实现Comparable接口),那么我们就可以建立一个“该类的比较器”来进行排序。Comparable总是只...
答:不对,如果两个对象x和y满足x.equals(y)==true,它们的哈希码(hashcode)应当相同。Java对于eqauls方法和hashCode方法是这样规定的:(1)如果两个对象相同(equals方法返回true),那么它们的hashCode值一定要相同;(2)如果两个对象的hashCode相同,...