休眠中的教练协会

时间:2014-02-14 11:51:29

标签: java hibernate caching

我正在尝试使用hibernate的二级缓存来缓存关联。 首先,我有部门类,用于存储用户列表。

@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)

public class Department {

@OneToMany(fetch=FetchType.EAGER, cascade=CascadeType.ALL, mappedBy="department")
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
public Set<User> getUsersSet() {
    return this.usersSet;
}

然后我有User类存储部门。

@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
public class User{

@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="department_id")
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
public Department getDepartment() {
    return this.department;
}

我已在部门和用户类中应用缓存和关联。 此关联存储在缓存中。     sessionFactory.getStatistics()。如果我在关联时启用缓存,则getSecondLevelCacheHitCount()也会增加。 当我尝试检索某个部门时,部门正在缓存并且没有数据库命中,但是,每当我获取某个部门的用户时,我都会看到一个数据库命中:

Set<User> users = department.getUsersSet();
for (User u : users) {
   System.out.println("User name : " + u.getFirstName());
}

0 个答案:

没有答案