Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我应该在Hibernate中使用什么查询来获取POJO?_Java_Hibernate_Orm_Session_Jpa - Fatal编程技术网

Java 我应该在Hibernate中使用什么查询来获取POJO?

Java 我应该在Hibernate中使用什么查询来获取POJO?,java,hibernate,orm,session,jpa,Java,Hibernate,Orm,Session,Jpa,我学习了Hibernate,并使用它在很大程度上减少了我的Java代码,并且能够 以减少用于DB的时间。现在,我应该使用什么类型的查询来完成我的 获取要显示的数据库列表、更新和删除的操作 我的删除代码是 String newToken = "DELETEUSER"; if(!TokenManager.checkRoleToken(newToken)){ return; } Session session = Main.getSession(); //calling the main me

我学习了Hibernate,并使用它在很大程度上减少了我的Java代码,并且能够 以减少用于DB的时间。现在,我应该使用什么类型的查询来完成我的 获取要显示的数据库列表、更新和删除的操作

我的删除代码是

String newToken = "DELETEUSER";
if(!TokenManager.checkRoleToken(newToken)){
    return;
}
Session session = Main.getSession(); //calling the main method to get sesion 
Leavetable table = new Leavetable; // intialisation of object table
try{
    Transaction tr = session.beginTransaction();
    table = session.createQuery();
    session.delete(table); // deletion of the object and its properties  from selected leaveID
    tr.commit();            
}
finally{
    session.close();
}
我的数据库更新代码

public void updateLeaveTable( Leavetable leave ) {
    String newToken = "ADDUSER";
    if( !TokenManager.checkRoleToken( newToken ) ) {
        return;
    }
    Session session = Main.getSession(); // calling the main method to get
                                         // session
    try {
        session = Main.getSession();
        Transaction tr = session.beginTransaction();
        session.saveOrUpdate( leave ); // here without query the table gets
                                       // updated How?
        tr.commit();
    }
    finally {
        session.close();
    }
}
我应该遵循什么类型的查询。我进入项目前的最后一项任务。当我
我知道这将开始我作为开发人员的生活。请提供任何建议。

您是指HQL查询吗?嗯,对
Leavetable
实体的典型查询如下所示:

Query q = session.createQuery("from Leavetable t where t.someField = :value");
q.setParameter("value", foo);
List<Leavetable> results = q.list();
get()
方法很特殊,因为 标识符唯一地标识一个对象 类的单个实例。因此它是 应用程序使用 标识符,作为 持久对象。检索 标识符可以在以下情况下使用缓存: 检索对象,避免 如果对象已被删除,则数据库命中 缓存。Hibernate还提供了
load()
方法:

User user = (User) session.load(User.class, userID);
load()方法较旧;get()是 由于用户原因添加到Hibernate的API 要求差别很小:

如果
load()
在中找不到对象 缓存或数据库中存在异常 扔。load()方法从不 返回null。
get()
方法 如果无法创建对象,则返回
null
找到了

load()
方法可能返回代理 而不是真正的持久实例。 代理是一个可触发的占位符 加载真实对象时 它是第一次被访问;我们 在本节后面讨论代理。 另一方面,
get()
never 返回一个代理

get()
load()
很简单:
如果您确定 持久对象存在,并且 不存在将被视为不存在 例外情况下,
load()
是一个很好的选择 选项如果你不确定是否有 具有给定 标识符,使用
get()
并测试 返回值以查看它是否为null。 使用
load()
暗示:申请可能
检索有效引用(代理)
在没有
点击数据库以检索其
持续状态。因此,
load()
可能 不抛出异常时不抛出异常 在中查找持久对象 缓存或数据库;例外情况是 稍后,当代理被调用时抛出 访问

当然,通过 标识符没有使用标识符灵活 任意查询

另请参见Hibernate文档(下面的链接)

参考文献
  • Hibernate核心参考指南

    • 您是指HQL查询吗?嗯,对
      Leavetable
      实体的典型查询如下所示:

      Query q = session.createQuery("from Leavetable t where t.someField = :value");
      q.setParameter("value", foo);
      List<Leavetable> results = q.list();
      
      get()
      方法很特殊,因为 标识符唯一地标识一个对象 类的单个实例。因此它是 应用程序使用 标识符,作为 持久对象。检索 标识符可以在以下情况下使用缓存: 检索对象,避免 如果对象已被删除,则数据库命中 缓存。Hibernate还提供了
      load()
      方法:

      User user = (User) session.load(User.class, userID);
      
      load()方法较旧;get()是 由于用户原因添加到Hibernate的API 要求差别很小:

      如果
      load()
      在中找不到对象 缓存或数据库中存在异常 扔。load()方法从不 返回null。
      get()
      方法 如果无法创建对象,则返回
      null
      找到了

      load()
      方法可能返回代理 而不是真正的持久实例。 代理是一个可触发的占位符 加载真实对象时 它是第一次被访问;我们 在本节后面讨论代理。 另一方面,
      get()
      never 返回一个代理

      get()
      load()
      很简单:
      如果您确定 持久对象存在,并且 不存在将被视为不存在 例外情况下,
      load()
      是一个很好的选择 选项如果你不确定是否有 具有给定 标识符,使用
      get()
      并测试 返回值以查看它是否为null。 使用
      load()
      暗示:申请可能
      检索有效引用(代理)
      在没有
      点击数据库以检索其
      持续状态。因此,
      load()
      可能 不抛出异常时不抛出异常 在中查找持久对象 缓存或数据库;例外情况是 稍后,当代理被调用时抛出 访问

      当然,通过 标识符没有使用标识符灵活 任意查询

      另请参见Hibernate文档(下面的链接)

      参考文献
      • Hibernate核心参考指南

      @pascal非常感谢,我可以像下面这样编写Hql查询q=session.createQuery(“from leave table t,其中t.leaveID=:id”);q、 setParameter(“id”,…);那个foo表示什么hear@pascal对于更新,我不需要一个查询,hibernate为我做。会话。保存或更新(离开)。我是吗right@Code那个foo只是一个随机的例子,因为我不知道Leavetable是什么样子:),但我添加了更多关于通过标识符检索对象的方法的细节,因为我现在知道这可能是您最初的意图(与“泛型”查询相比).@非常感谢您让我了解这两个方法及其差异。@是的,我找到了,foo是通过我的方法传递的id值。@pascal非常感谢,我可以像这样编写Hql查询吗=