在hibernate中创建我们使用的标准
Criteria criterea=session.createCritera(SomeClass.class)
它也可能在其他一些例子中可用,但我无法理解这些方法的结构。
注意这是我试图理解使用SomeClass.class
类似参数的一个例子
我的问题是SomeClass.class
的目的是什么?为什么我们需要它,使用它作为论证有什么好处。
编辑它不是重复的,但与this question
有字符串连接答案 0 :(得分:2)
.class
语法是什么?如果将.class
附加到类名的末尾,则会得到与该类对应的Class<T>
对象。
示例:
String.class
返回Class<String>
Integer.class
返回Class<Integer>
反射!如果你有权访问一个类对象,你可以做各种很酷的东西!您可以调用方法,获取和设置字段值......
之前我还没有使用过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();