someMethod的基础过程(SomeClass.class)

时间:2016-10-05 17:10:04

标签: java reflection

在hibernate中创建我们使用的标准

Criteria criterea=session.createCritera(SomeClass.class)

它也可能在其他一些例子中可用,但我无法理解这些方法的结构。

注意这是我试图理解使用SomeClass.class类似参数的一个例子

我的问题是SomeClass.class的目的是什么?为什么我们需要它,使用它作为论证有什么好处。

编辑它不是重复的,但与this question

有字符串连接

2 个答案:

答案 0 :(得分:2)

这个.class语法是什么?

如果将.class附加到类名的末尾,则会得到与该类对应的Class<T>对象。

示例:

  • String.class返回Class<String>
  • 的实例
  • Integer.class返回Class<Integer>
  • 的实例

你可以用类对象做什么

反射!如果你有权访问一个类对象,你可以做各种很酷的东西!您可以调用方法,获取和设置字段值......

为什么在Hibernate中使用它?

之前我还没有使用过hibernate,但是这种语法也用在其他库中,特别是在ORM或JSON序列化器中。我将使用JSON序列化程序作为示例,因为我更熟悉它们。

在JSON序列化程序中,您需要为其提供一个类对象,因为它需要获取要序列化为JSON的所有字段。它使用反射来获取和设置这些字段的值,然后将它们转换为JSON。当它反序列化JSON时,它会找到需要使用JSON中的名称设置的字段。这些操作需要一个Class对象,因为没有它,Java如何知道哪个类应该找到该字段?另外,要使用反射创建新对象,还需要Class

答案 1 :(得分:-1)

Hibernate提供了许多方法来处理与RDBMS表相关的对象。 一种方法是提供createCriteria()方法的Session接口,该方法可用于创建Criteria对象。 正如名称所说的那样,通过应用过滤规则和程序员愿望的逻辑条件来执行查询是很有用的。

例如:

Criteria obj=session.createCritera(Galaxy.class) // say SomeClass is Galaxy.class
List results = obj.list();

这里,条件查询是一个只返回与Galaxy类对应的每个对象的方法。

我们甚至可以使用条件限制结果,例如可用于Criteria对象的add()方法为条件查询添加限制。 以下是限制返回拥有74亿人口星球的行星记录:

Criteria cr = session.createCriteria(Galaxy.class);
cr.add(Restrictions.eq(“planet”, 75000000000));
List results = cr.list();
相关问题