2013-05-04 103 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; 
}