HibernateSessionFactoryUtil类提供了一个getSessionFactory()静态方法。
通过调用此方法可以返回一个SessionFactory对象。
在其他地方创建Session对象的时候:
只需要这样一句代码:
Session session = HibernateSessionFactoryUtil.getSessionFactory().getCurrentSession();
这样既可获得Session对象。
HibernateTest类封装了对数据操作更删改查的基本方法。
根据不同的业务逻辑环境代码作出相应的变更即可使用。
HibernateSessionFactoryUtil.java
package com.xiami.util;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateSessionFactoryUtil {
private static final SessionFactory sessionFactory;
static {
try {
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (Throwable ex) {
throw new ExceptionInInitializerError(ex);
}
}
private HibernateSessionFactoryUtil() {
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
HibernateTest.java
package com.xiami.examples;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.xiami.util.HibernateSessionFactoryUtil;
public class HibernateTest {
public static void main(String args[]){
HibernateTest test = new HibernateTest();
//增加一条记录]
// Guestbook gb = new Guestbook();
// gb.setContent("我是内容");
// gb.setCreatedTime("2012-03-17");
// gb.setEmail("kalision@foxmail.com");
// gb.setName("mr.zhou");
// gb.setPhone("12345678912");
// gb.setTitle("我的信息");
// test.addGuestbook(gb);
//删除一条记录
// test.deleteGuestbook(7);
//修改更新一条记录
// Guestbook gb = test.getGuestbook(1);
// gb.setName("admin");
// test.updateGuest(gb);
//得到一条记录
Guestbook gb = test.getGuestbook(1);
System.out.println(gb.getName());
}
/*
* 增加一条记录的方法
*/
public void addGuestbook(Guestbook gb){
Session session = HibernateSessionFactoryUtil.getSessionFactory().getCurrentSession();
Transaction tx = session.beginTransaction();
session.save(gb);
tx.commit();
}
/*
* 删除一条记录的方法
*/
public void deleteGuestbook(Integer id){
Session session = HibernateSessionFactoryUtil.getSessionFactory().getCurrentSession();
Transaction tx = session.beginTransaction();
//第一种方法.先得到对应id的记录的对象,然后在删除此对象对应的记录。
// Guestbook gb = (Guestbook) session.get(Guestbook.class, new Integer(id));
// tx.commit();
// session = HibernateSessionFactoryUtil.getSessionFactory().getCurrentSession();
// tx = session.beginTransaction();
// session.delete(gb);
// tx.commit();
//第二种方法。直接调用本类中的getGuestbook()方法来得到要对应id的对象。直接就删除了。
Guestbook gb = getGuestbook(id);
session.delete(gb);
tx.commit();
}
/*
* 修改一条记录的方法(更新)
*/
public void updateGuest(Guestbook gb){
Session session = HibernateSessionFactoryUtil.getSessionFactory().getCurrentSession();
Transaction tx = session.beginTransaction();
session.update(gb);
tx.commit();
}
/*
* 查询一条记录的方法
*/
public Guestbook getGuestbook(Integer id){
Session session = HibernateSessionFactoryUtil.getSessionFactory().getCurrentSession();
Transaction tx = session.beginTransaction();
Guestbook gb = new Guestbook();
gb = (Guestbook) session.get(Guestbook.class, new Integer(id));
return gb;
}
}