Hibernate延时加载lazy机制问题及其解决方法



Hibernate延时加载lazy机制问题及其解决方法。延迟初始化错误是运用Hibernate开发项目时最常见的错误。如果对一个类或者集合配置了延迟检索策略,那么必须当代理类实例或代理集合处于持久化状态(即处于Session范围内)时,才能初始化它。如果在游离状态时才初始化它,就会产生延迟初始化错误。

下面把Customer.hbm.xml文件的元素的lazy属性设为true,表示使用延迟检索策略:

当执行Session的load()方法时,Hibernate不会立即执行查询CUSTOMERS表的select语句,仅仅返回Customer类的代理类的实例,这个代理类具由以下[......]

Read more

list和iterator方法的区别



list和iterator方法的区别。Hibernate面试题 — list和iterator方法的区别

1.先介绍一下java中的缓存系统JCS(java cache system)
1.1、JCS(Java Caching System)是一个对象Cache,它可以把Java对象缓存起来,提高那些访问频率很高的Java对象的存取效率。JCS是按照对象的唯一标示来存取对象的,比如说可以按照对象的 hashCode来存取。
1.2、对于Hibernate来说,可以利用JCS来缓存查询结果,这样当下次访问同样的数据,就无须[......]

Read more

Hibernate 缓存(二)

Hibernate 缓存(二)1. 关于hibernate缓存的问题:
1.1.1. 基本的缓存原理
Hibernate缓存分为二级,第一级存放于session中称为一级缓存,默认带有且不能卸载。

第二级是由sessionFactory控制的进程级缓存。是全局共享的缓存,凡是会调用二级缓存的查询方法 都会从中受益。只有经正确的配置后二级缓存才会发挥作用。同时在进行条件查询时必须使用相应的方法才能从缓存中获取数据。比如Query.iterate()方法、load、get方法等。必须注意的是session.find方法永远是从数据库中获取数据,不会从二级[......]

Read more

Hibernate 缓存(一)

Hibernate 缓存(一)缓存是位于应用程序与物理数据源之间,用于临时存放复制数据的内存区域,目的是为了减少应用程序对物理数据源访问的次数,从而提高应用程序的运行性能.
Hibernate在查询数据时,首先到缓存中去查找,如果找到就直接使用,找不到的时候就会从物理数据源中检索,所以,把频繁使用的数据加载到缓存区后,就可以大大减少应用程序对物理数据源的访问,使得程序的运行性能明显的提升.

Hibernate缓存分类:

Session缓存,一级缓存.

SessionFactory的缓存分为内置缓存和外置缓存.内置缓存中存放的是SessionFactory对象[......]

Read more

Hibernate 自动建表配置方法

Hibernate 自动建表配置方法。只要在hibernate.cfg.xml添加这句话,就可以自动生成数据表
<property name=”hibernate.hbm2ddl.auto”>update</property>

update:表示自动根据model对象来更新表结构,启动hibernate时会自动检查数据库,如果缺少表,则自动建表;如果表里缺少列,则自动添加列。

还有其他的参数:
create:启动hibernate时,自动删除原来的表,新建所有的表,所以每次启动后的以前数据都会丢失。

create-drop:启动hibernate时[......]

Read more

Hibernate注解详细介绍

Hibernate注解详细介绍.

声明实体Bean  
  
@Entity  
public class Flight implements Serializable {  
  Long id;  
  @Id  
  public Long getId() { return id; }  
  public void setId(Long id) { this.id = id; }  
}  
  
@Entity 注解将一个类声明为实体 Bean, @Id 注解声明了该实体Bean的标识属性。  
  
Hibernate 可以对类的属性或者方法进行注解。[......]

Read more

@MappedSuperclass的用法

@MappedSuperclass的用法实体类baseEntity.java

package com.rock.cft.hibernate;import java.util.Date;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.MappedSuperclass;//@MappedSuperclass 用在父类上面。当这个类肯定是父类时,加此标注。如果改成@Entity,[......]

Read more

Hibernate 的Sequence

.Hibernate 的Sequence .Oracle中,有的Column要自动增长,该列基本上为主键,那么,就要给该Column创建Sequence。 例如:create sequence seq_id_forTest minvalue 1 start with 1 increment by 1 cache 20; 仅此还不够的,还要创建Trigger,可以设置为before insert触发器。 例如:create or replace trigger TRG_USERDUTY before insert on userduty for each row declare — local[......]

Read more

freemarker中使用struts2标签

freemarker中使用struts2标签。1.将系统所需的标签库定义文件(也就是tld文件)复制到web应用中,对于struts2系统,则需要将struts2-core-2.0.6.jar中的struts-tag.tld拷贝到web应用中

2.在web.xml中启动JSPSupportServlet

JSPSupportServlet

org.apache.struts2.views.JspSupportServlet

1

3.在freemarker模板中使用assign指令导入标签库,导入标签库代码如下:[......]

Read more