Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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从数据库检索对象_Java_Hibernate_Persistence - Fatal编程技术网

Java 通过hibernate从数据库检索对象

Java 通过hibernate从数据库检索对象,java,hibernate,persistence,Java,Hibernate,Persistence,我正在创建一个hibernate应用程序,可以通过hibernate将数据保存到dtb。尽管如此,我还是不知道如何从数据库中检索数据。有谁能告诉我,如何以某种方式做到这一点,这将类似于我保存数据的方式?我在谷歌上搜索了很多,但是所有的东西,我都没有找到任何东西,那看起来就像我的方式。。。例如,他们使用了大量的注释等。我对hibernate非常陌生,所以这可能不是一个好方法,如何创建hibernate应用程序。如果是,请写在评论中 我的UserDAOImpl的一部分: UserDAO user;

我正在创建一个hibernate应用程序,可以通过
hibernate
将数据保存到dtb。尽管如此,我还是不知道如何从数据库中检索数据。有谁能告诉我,如何以某种方式做到这一点,这将类似于我保存数据的方式?我在谷歌上搜索了很多,但是所有的东西,我都没有找到任何东西,那看起来就像我的方式。。。例如,他们使用了大量的注释等。我对hibernate非常陌生,所以这可能不是一个好方法,如何创建hibernate应用程序。如果是,请写在评论中

我的
UserDAOImpl
的一部分:

UserDAO user;

public UserDAOImpl() {
    user = new UserDAO();
}

public void createUser(int id, String Username, String CreatedBy) {
    user.setUserId(id);
    user.setUsername(Username);
    user.setCreatedBy(CreatedBy);
    user.setCreatedDate(new Date());
}

public void saveUser() {
   Session session = HibernateUtil.getSessionFactory().openSession();
   session.beginTransaction();      
   session.save(user);
   // save the data to the database
   session.getTransaction().commit();
   // close the connection
   session.disconnect();
}


public void findUser() {
     // ????????????
}
用户道:

public class UserDAO implements java.io.Serializable {

    /**
     * generated serialVersionUID
     */
    private static final long serialVersionUID = -6440259681541809279L;

    private int userId;
    private String username;
    private String createdBy;
    private Date createdDate;

    public UserDAO() {
    }

    public UserDAO(int userId, String username, String createdBy,
            Date createdDate) {
        this.userId = userId;
        this.username = username;
        this.createdBy = createdBy;
        this.createdDate = createdDate;
    }

    public int getUserId() {
        return this.userId;
    }

    public void setUserId(int userId) {
        this.userId = userId;
    }

    public String getUsername() {
        return this.username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getCreatedBy() {
        return this.createdBy;
    }

    public void setCreatedBy(String createdBy) {
        this.createdBy = createdBy;
    }

    public Date getCreatedDate() {
        return this.createdDate;
    }

    public void setCreatedDate(Date createdDate) {
        this.createdDate = createdDate;
    } 
}

假设表名为User,下面是获取输入userId的用户数据的示例代码:

public User findUserById(int userId) {
   Session session = HibernateUtil.getSessionFactory().openSession();
   String queryString = "from User where userId = :userId";  
   Query query = session.createQuery(queryString);  
   query.setInteger("userId", userId);  
   Object queryResult = query.uniqueResult();  
   UserDAO user = (UserDAO)queryResult;
}

最后,我在这里的另一篇博文中找到了答案

// finds user by ID
public UserDAO findUserById(int userId) {
    Session session = HibernateUtil.getSessionFactory().openSession();
    session = HibernateUtil.getSessionFactory().openSession();
    UserDAO userDAO = (UserDAO) session.get(UserDAO.class, userId);
    session.disconnect();
    return userDAO;
}

所以,即使在使用
hibernate
,我也必须使用SQL查询?我在想,它会变得更容易,就像我将该对象保存到dtb时一样:-/…或者我不会说更容易…但是没有SQLand另外-为什么我要在那里写表名?我已经在
User.hbm.xml
中找到了它……您真的不必这么做。有更简单的方法可以简单地检索所有内容,而无需编写HQL。我相信本教程将帮助您了解:精彩绝伦!使用抽象类和接口的想法真是太好了!Thx的链接:)顺便说一句,如果有人会读它-它已经有点不推荐,所以一些小的改进将是必要的