Eclipse下生成HibernateDAO中的幾個方法
* save()方法提供了向數(shù)據(jù)庫中添加數(shù)據(jù)的功能,但只能添加,這個DAO沒有生成Update()的方法
* 但你可以簡單的把save()方法改稱具有Update功能:將getSession().save * (transientInstance);這句改成
* getSession().merge(transientInstance);或者getSession().saveOrUpdate
* (transientInstance);
- public void save(User transientInstance) {
- log.debug("saving User instance");
- try {
- Session session=getSession();
- Transaction tx=session.beginTransaction();
- session.save(transientInstance);
- tx.commit();
- session.close();
- log.debug("save successful");
- } catch (RuntimeException re) {
- log.error("save failed", re);
- throw re;
- }
- }
delete()方法用來刪除的 實際上我們會用下邊的這個方法進行刪除
- public void delete(Integer id){
- log.debug("deleting User instance...");
- User user=findById(id);
- delete(user);
- }
- public void delete(User persistentInstance) {
- log.debug("deleting User instance");
- try {
- Session session=getSession();
- Transaction tx=session.beginTransaction();
- session.delete(persistentInstance);
- tx.commit();
- session.close();
- log.debug("delete successful");
- } catch (RuntimeException re) {
- log.error("delete failed", re);
- throw re;
- }
- }
根據(jù)編號進行查找
- public User findById(java.lang.Integer id) {
- log.debug("getting User instance with id: " + id);
- try {
- User instance = (User) getSession().get("hbm.User", id);
- return instance;
- } catch (RuntimeException re) {
- log.error("get failed", re);
- throw re;
- }
- }
findByExample()方法實現(xiàn)的功能相當于"select * from Usertable"實現(xiàn)的功能就是查詢所有 數(shù)據(jù).
- public List findByExample(User instance) {
- log.debug("finding User instance by example");
- try {
- List results = getSession().createCriteria("hbm.User").add(
- Example.create(instance)).list();
- log.debug("find by example successful, result size: "
- + results.size());
- return results;
- } catch (RuntimeException re) {
- log.error("find by example failed", re);
- throw re;
- }
- }
findByProperty()方法用來靈活的提供一種按條件查詢的方法,你可以自己定義要按什么樣的方 式查詢.
- public List findByProperty(String propertyName, Object value) {
- log.debug("finding User instance with property: " + propertyName
- + ", value: " + value);
- try {
- String queryString = "from User as model where model."
- + propertyName + "= ?";
- Query queryObject = getSession().createQuery(queryString);
- queryObject.setParameter(0, value);
- return queryObject.list();
- } catch (RuntimeException re) {
- log.error("find by property name failed", re);
- throw re;
- }
- }
- public List findByName(Object name) {
- return findByProperty(NAME, name);
- }
- public List findBySex(Object sex) {
- return findByProperty(SEX, sex);
- }
- public List findByAge(Object age) {
- return findByProperty(AGE, age);
- }
- public List findAll() {
- log.debug("finding all User instances");
- try {
- String queryString = "from User";
- Query queryObject = getSession().createQuery(queryString);
- return queryObject.list();
- } catch (RuntimeException re) {
- log.error("find all failed", re);
- throw re;
- }
- }
將傳入的detached狀態(tài)的對象的屬性復制到持久化對象中,并返回該持久化對象 如果該session中沒有關(guān)聯(lián)的持久化對象,加載一個,如果傳入對象未保存,保存一個副本并作為持久對象返回,傳入對象依然保持detached狀態(tài)。
可以用作更新數(shù)據(jù)
- public User merge(User detachedInstance) {
- log.debug("merging User instance");
- try {
- Session session=getSession();
- Transaction tx=session.beginTransaction();
- User result = (User) session.merge(detachedInstance);
- tx.commit();
- session.close();
- log.debug("merge successful");
- return result;
- } catch (RuntimeException re) {
- log.error("merge failed", re);
- throw re;
- }
- }
將傳入的對象持久化并保存。 如果對象未保存(Transient狀態(tài)),調(diào)用save方法保存。如果對象已保存(Detached狀態(tài)),調(diào)用update方法將對象與Session重新關(guān)聯(lián)。
- public void attachDirty(User instance) {
- log.debug("attaching dirty User instance");
- try {
- getSession().saveOrUpdate(instance);
- log.debug("attach successful");
- } catch (RuntimeException re) {
- log.error("attach failed", re);
- throw re;
- }
- }
將傳入的對象狀態(tài)設置為Transient狀態(tài)
- public void attachClean(User instance) {
- log.debug("attaching clean User instance");
- try {
- getSession().lock(instance, LockMode.NONE);
- log.debug("attach successful");
- } catch (RuntimeException re) {
- log.error("attach failed", re);
- throw re;
- }
- }
【編輯推薦】
- Hibernate對各數(shù)據(jù)庫的連接方言
- Hibernate支持Access方言源代碼
- Hibernate不同數(shù)據(jù)庫的連接及SQL方言
- hibernate中update與saveOrUpdate的區(qū)別
- HIBERNATE方言