将Hibernate的PersistentSet转换为CopyOnWriteArraySet

时间:2011-06-08 14:52:12

标签: java hibernate set hashset persistent-set

我在下面的类中使用CopyOnWriteArraySet,因为我只喜欢它的线程安全迭代器。

public class MyClass{
 Set _children = new CopyOnWriteArraySet();

 public void setChildren(Set children){
  _children = children;
 }

 public Set getChildren(){
  return _children;
 }
}

但是,我也使用Hibernate进行持久化,用自己的PersistentSet(在内部使用HashSet)替换我的CopyOnWriteArraySet。

不幸的是,HashSet不是线程安全的,所以我想要我的CopyOnWriteArraySet。

此处转换的最佳做法是什么?

我个人的,天真的尝试是用这个取代二传手:

 public void setChildren(Set children){
  CopyOnWriteArraySet newSet = null;
  if ((children instanceof CopyOnWriteArraySet) == false){
   newSet = new CopyOnWriteArraySet(children);
  }
  else{
   newSet = (CopyOnWriteArraySet)children;
  }
  _children = newSet;
 }

这是解决这个问题的好方法吗?

0 个答案:

没有答案