Java 通过hibernate从数据库检索对象
我正在创建一个hibernate应用程序,可以通过Java 通过hibernate从数据库检索对象,java,hibernate,persistence,Java,Hibernate,Persistence,我正在创建一个hibernate应用程序,可以通过hibernate将数据保存到dtb。尽管如此,我还是不知道如何从数据库中检索数据。有谁能告诉我,如何以某种方式做到这一点,这将类似于我保存数据的方式?我在谷歌上搜索了很多,但是所有的东西,我都没有找到任何东西,那看起来就像我的方式。。。例如,他们使用了大量的注释等。我对hibernate非常陌生,所以这可能不是一个好方法,如何创建hibernate应用程序。如果是,请写在评论中 我的UserDAOImpl的一部分: UserDAO user;
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的链接:)顺便说一句,如果有人会读它-它已经有点不推荐,所以一些小的改进将是必要的