2013-05-04 108 views
-2

我正在创建一个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() { 
    // ???????????? 
} 

的UserDAO:

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; 
    } 
} 

回答

1

假设表名是用户,这里是示例代码以获取输入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; 
} 
+0

所以即使当我使用'hibernate',我必须使用SQL查询吗?我在想,当我将这个对象保存到dtb时会变得更容易: -/...或者我不会说更容易...但是如果没有SQL – Dworza 2013-05-04 15:03:53

+0

以及另外 - 为什么我可以在那里写上表名?我已经在'User.hbm.xml'中找到了它...... – Dworza 2013-05-04 15:19:57

+1

你真的不需要。有更简单的方法可以简单地检索所有内容而无需编写HQL。我相信这个教程应该可以帮助你学习:http://blog.patouchas.net/technology/hibernate-dao-java-tutorial/ – 2013-05-04 15:26:18

0

最后,我在另一个帖子里找到了答案。

// 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; 
}