在hibernate 4中初始化ServiceRegistry

时间:2012-12-19 08:56:30

标签: java hibernate

由于在hibernate 3中不推荐使用buildSessionFactory方法,因此我们必须通过ServiceRegistry创建Session Factory。我创建了它,如下所示,

 Configuration configuration = new Configuration().configure();
 Map<String, String> map = new HashMap<String, String>((Map)configuration
       .getProperties());
 ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(map)
       .buildServiceRegistry();

但它向我显示了pmd错误,如下所示,

Multiple markers at this line
    - Type safety: The expression of type Map needs unchecked conversion to conform to Map<? extends String,? extends 
     String>
    - Map is a raw type. References to generic type Map<K,V> should be parameterized

我应该如何避免它?这是因为(Map)configuration.getProperties()中的强制转换对吗?

为什么我不能在那里使用泛型,

(Map<String,String>)configuration.getProperties()

以上是正确初始化Service Registry的正确方法,因为applySettings()方法将Map作为参数?

1 个答案:

答案 0 :(得分:0)

可以使用

(Map<String,String>)configuration.getProperties()

但它会生成警告,因为在执行强制转换时(在运行时),无法检查返回的Map是否具有String作为类型参数,因为该信息不再可用。实际上,在编译之后,演员阵容变为

(Map)configuration.getProperties()

虽然地图在实践中可能只包含字符串,但你不应该依赖它,而应该只使用Map<?,?>