jsp Hibernate入門(mén)教程第3/3頁(yè)
更新時(shí)間:2008年11月14日 23:08:55 作者:
如果您是在同一個(gè)Session中取出數(shù)據(jù)并想要馬上進(jìn)行更新,則只要先查詢(xún)并取出對(duì)象,透過(guò)setXXX()方法設(shè)定好新的值,然后呼叫session.flush()即可在同一個(gè)Session中更新指定的數(shù)據(jù)
Hibernate提供了一個(gè)saveOrUpdate()方法,為數(shù)據(jù)的儲(chǔ)存或更新提供了一個(gè)統(tǒng)一的操作接口,藉由定義映像文件時(shí),設(shè)定<id>標(biāo)簽的unsaved-value來(lái)決定什么是新的值必需,什么是已有的值必須更新:
User.hbm.xml
復(fù)制代碼 代碼如下:
<id name="id" type="string" unsaved-value="null">
<column name="user_id" sql-type="char(32)" />
<generator class="uuid.hex"/>
</id>
unsaved-value
可以設(shè)定的值包括:
any - 總是儲(chǔ)存
none - 總是更新
null - id為null時(shí)儲(chǔ)存(預(yù)設(shè))
valid - id為null或是指定值時(shí)儲(chǔ)存
這樣設(shè)定之后,您可以使用session.saveOrUpdate(updated);來(lái)取代上一個(gè)程序的session.update(updated);方法。
如果要?jiǎng)h除數(shù)據(jù),只要使用delete()方法即可,直接看個(gè)例子。
復(fù)制代碼 代碼如下:
HibernateTest.java
import onlyfun.caterpillar.*;
import net.sf.hibernate.*;
import net.sf.hibernate.cfg.*;
import java.util.*;
public class HibernateTest {
public static void main(String[] args) throws HibernateException {
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
List users = session.find("from User");
User updated = null;
for (ListIterator iterator = users.listIterator(); iterator.hasNext(); ) {
User user = (User) iterator.next();
if(updated == null)
updated = user;
System.out.println(user.getName() +
"\n\tAge: " + user.getAge() +
"\n\tSex: " + user.getSex());
}
session.delete(updated);
users = session.find("from User");
session.close();
sessionFactory.close();
for (ListIterator iterator = users.listIterator(); iterator.hasNext(); ) {
User user = (User) iterator.next();
System.out.println(user.getName() +
"\n\tAge: " + user.getAge() +
"\n\tSex: " + user.getSex());
}
}
}
一個(gè)執(zhí)行的結(jié)果范例如下:
log4j:WARN No appenders could be found for logger (net.sf.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Hibernate: select user0_.user_id as user_id, user0_.name as name, user0_.sex as sex, user0_.age as age from USER user0_
justin
Age: 28
Sex: M
momor
Age: 25
Sex: F
Bush
Age: 25
Sex: M
Becky
Age: 35
Sex: F
Hibernate: delete from USER where user_id=?
Hibernate: select user0_.user_id as user_id, user0_.name as name, user0_.sex as sex, user0_.age as age from USER user0_
momor
Age: 25
Sex: F
Bush
Age: 25
Sex: M
Becky
Age: 35
Sex: F
Hibernate對(duì)于數(shù)據(jù)的更新、刪除等動(dòng)作,是依懶id值來(lái)判定,如果您已知id值,則可以使用load()方法來(lái)加載資料,例如:
User user = (User) session.load(User.class, id);
更多有關(guān)于Hibernate資料更新操作的說(shuō)明,您可以看看參考手冊(cè)的第九章內(nèi)容。
您可能感興趣的文章:
- JSP 開(kāi)發(fā)之hibernate的hql查詢(xún)多對(duì)多查詢(xún)
- JSP 開(kāi)發(fā)之hibernate配置二級(jí)緩存的方法
- JSP開(kāi)發(fā)中hibernate框架的常用檢索方式總結(jié)
- JSP 中Hibernate實(shí)現(xiàn)映射枚舉類(lèi)型
- jsp Hibernate批量更新和批量刪除處理代碼
- jsp Hibernate 函數(shù)簡(jiǎn)介
- jsp hibernate 數(shù)據(jù)保存操作的原理
- jsp hibernate的分頁(yè)代碼
- JSP開(kāi)發(fā)之hibernate之單向多對(duì)一關(guān)聯(lián)的實(shí)例
相關(guān)文章
深入淺析Jsp中 out.print 和 out.write 的區(qū)別
本文簡(jiǎn)明扼要的給大家介紹了jsp中 out.print 和 out.write 的區(qū)別,雖然本文簡(jiǎn)短但是主要內(nèi)容給大家介紹清楚了,需要的朋友參考下吧2017-02-02asp.net getRemoteAddr()與 getRemoteHost()的區(qū)別
getRemoteAddr()與 getRemoteHost()的區(qū)別小結(jié),需要的朋友可以參考下。2009-12-12Spring mvc實(shí)現(xiàn)Restful返回json格式數(shù)據(jù)實(shí)例詳解
這篇文章主要介紹了Spring mvc實(shí)現(xiàn)Restful返回json格式數(shù)據(jù)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-03-03jsp跳轉(zhuǎn)getRequestDispatcher()和sendRedirect()的區(qū)別
這篇文章主要介紹了jsp跳轉(zhuǎn)getRequestDispatcher()和sendRedirect()的區(qū)別,需要的朋友可以參考下2014-04-04JSP自定義標(biāo)簽簡(jiǎn)單入門(mén)教程
這篇文章主要為大家詳細(xì)介紹了JSP自定義標(biāo)簽簡(jiǎn)單入門(mén)教程,感興趣的小伙伴們可以參考一下2016-03-03基于javaweb+jsp實(shí)現(xiàn)學(xué)生宿舍管理系統(tǒng)
這篇文章主要介紹了基于javaweb+jsp實(shí)現(xiàn)的學(xué)生宿舍管理系統(tǒng)的示例代碼,文中的代碼介紹詳細(xì),對(duì)我們學(xué)習(xí)JSP有一定的幫助,需要的朋友可以參考一下2021-12-12