网页教学网
 当前位置: 网页教学网 >> 网络编程 >> JSP编程技术 >> 用Hibernate封装数据库操作的实例
[ HTML ] [ FW ] [ DW ] [ FP ] [ JS ] [ XML ] [ CSS ] [ 图象 ] [ FLASH ] [ .NET ] [ ASP ] [ JSP ] [ PHP ] [ 数据 ] [ 系统 ] [ 安全 ] [ 素材 ] [ 建站 ] [ 主机 ] [ 入门 ] [ 技巧 ]

用Hibernate封装数据库操作的实例

http://www.webjx.com  更新日期:2007-08-20 01:21  出处:网页教学网  作者:

这是我的实战JSP进阶教程之四。

本文,主要是想给Hibernate初学者,一点可以实际参考的例子。这段代码,就是本站bbs实际使用的代码片断,其实,也是我初学Hibernate的第一个习作,因此,比较幼稚,但也因此,可能更便于初学者理解。

代码比较简单,因此不作过多的说明。其中的HibernateUtil,就是我上篇Jsp教学文章贴的。

package bbs;
import net.sf.hibernate.*;
import java.math.BigDecimal;
import java.util.*;
import org.apache.log4j.Logger;
public final class ThreadDAO {
private final static Logger logger = Logger.getLogger(ThreadDAO.class);
public static List getThreads(String fid, String pno) throws HibernateException {
long forumid;
forumid = new Long(fid).longValue();
if(forumid > 9) forumid = 3;
return getThreads0(forumid, pno);
}
public static List getThreads2(String fid, String pno) throws HibernateException {
long forumid;
forumid = new Long(fid).longValue();
// if(forumid > 10) forumid = 3;
return getThreads0(forumid, pno);
}
//用hibernate进行分页显示的例子。
public static List getThreads0(long forumid, String pno) throws HibernateException {
List list = null;
Session s = HibernateUtil.currentSession();
Transaction tx = null;
int PAGE_SIZE = 20;
try {
tx = s.beginTransaction();
String q = "select t from bbs.Threads t where t.forumid="+forumid+
" and t.modvalue>=5 order by t.modvalue desc, t.modificationdate desc ";
Query query = s.createQuery (q);
int pnum = new Integer(pno).intValue();
int start = (pnum-1) * PAGE_SIZE;
/* 设置返回记录的起始位置 */
query.setFirstResult(start);
/* 设置返回记录数量的最大值 */
query.setMaxResults(PAGE_SIZE);
list = query.list();
tx.commit(); } catch(HibernateException he) {
if(tx != null) tx.rollback();
throw he;
}
finally {
HibernateUtil.closeSession();
}
return list;
}
public static int getTotalThreads(String fid) throws HibernateException {
int total = 0;
Session s = HibernateUtil.currentSession();
Transaction tx = null;
try {
tx = s.beginTransaction();
/* 使用hibernate 的session的load()方法, 根据主键获取实例
这是本程序反复使用的方法
*/
Forum forum = (Forum) s.load(Forum.class,new Long(fid));
total = forum.getThreads().intValue();
tx.commit();
} catch(HibernateException he) {
if(tx != null) tx.rollback();
throw he;
}
finally {
HibernateUtil.closeSession();
}
return total;
}
public static Threads getThreads(String tid) throws HibernateException {
Threads t = null;
Session s = HibernateUtil.currentSession();
Transaction tx = null;
try {
tx = s.beginTransaction();
t = (Threads) s.load(Threads.class,new Long(tid));
tx.commit();
} catch(HibernateException he) {
if(tx != null) tx.rollback();
throw he;
}
finally {
HibernateUtil.closeSession();
}
return t;
}
public static String getUsername(String uid) throws HibernateException {
User u = null;
Session s = HibernateUtil.currentSession();
Transaction tx = null;
try {
tx = s.beginTransaction();
u = (User) s.load(User.class,new Long(uid));
tx.commit();
} catch(HibernateException he) {
if(tx != null) tx.rollback();
throw he;
}
finally {
HibernateUtil.closeSession();
}
return u.getUsername();
}
public static String getThreadSubject(String tid) throws HibernateException {
Threads t = null;
Session s = HibernateUtil.currentSession();
Transaction tx = null;
try {
tx = s.beginTransaction();
t = (Threads) s.load(Threads.class,new Long(tid));
tx.commit();
} catch(HibernateException he) {
if(tx != null) tx.rollback();
throw he;
}
finally {
HibernateUtil.closeSession();
}
return t.getSubject();
}

/* 更新数据库的update操作 */
// added on 2004-12-29
public static boolean hideThread(String tid) throws HibernateException {
int total = 0;
Session s = HibernateUtil.currentSession();
Transaction tx = null;
try {
tx = s.beginTransaction();
Threads t = (Threads) s.get(Threads.class,new Long(tid));
if(t == null) return false;
BigDecimal mVal = t.getModvalue();
BigDecimal negOne = new BigDecimal("-1");
t.setModvalue(mVal.add(negOne));
s.saveOrUpdate(t);
tx.commit();
} catch(HibernateException he) {
if(tx != null) tx.rollback();
throw he;
}
finally {
HibernateUtil.closeSession();
}
return true;
}
// added on 2004-12-29
public static boolean topThread(String tid) throws HibernateException {
int total = 0;
Session s = HibernateUtil.currentSession();
Transaction tx = null;
try {
tx = s.beginTransaction();
Threads t = (Threads) s.get(Threads.class,new Long(tid));
if(t == null) return false;
BigDecimal mVal = t.getModvalue();
// BigDecmal oneVal = new BigDecimal("1");
BigDecimal oneVal = new BigDecimal("1");
t.setModvalue(mVal.add(oneVal));
s.saveOrUpdate(t);
tx.commit();
} catch(HibernateException he) {
if(tx != null) tx.rollback();
throw he;
}
finally {
HibernateUtil.closeSession();
}
return true;
}
}

关键词:网络编程,JSP,Hibernate
推荐给好友】【关闭】【收藏本文
最新五条评论
查看全部评论
评论总数 0
您的评论
用户名: 新注册) 密 码: 匿名:
·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为