再使用Hibernate框架的时候,第一次配置的时候它会去读取那些配置文件,这个是非常耗费时间和内存的事情,所
以我们希望每次使用框架的时候他这句代码只执行一次。所以需要构建一个工具类来实现这些效果。
工具类效果如下
package com.bird.hibernate.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
@SuppressWarnings("deprecation")
public final class Hibernateutils {
private static SessionFactory sf;
private Hibernateutils(){}
static{
Configuration cfg = new Configuration();
cfg.configure();
sf = cfg.buildSessionFactory();
}
public static SessionFactory getSessionFactory() {
return sf;
}
public static Session getSession(){
return sf.openSession();
}
}
然后分别是使用工具类实现的对数据库的插入数据和查询数据的操作
package com.bird.hibernate.test;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.bird.domain.User;
public class Base {
/**
* @param args
*/
public static void main(String[] args) {
// User use = new User();
// use.setBirthday(new Date());
// use.setName("bird");
// addUser(use);
User use = getUser(1);
System.out.println(use.getName()+" "+use.getId());
}
public static void addUser(User use) {
Session s = null;
Transaction ts = null;
try {
s = Hibernateutils.getSession();
ts = s.beginTransaction();
s.save(use);
ts.commit();
} catch (HibernateException e) {
if (ts != null)
ts.rollback();
throw e;
} finally {
if (s != null)
s.close();
}
}
public static User getUser(int id) {
Session s = null;
try {
s = Hibernateutils.getSession();
User use = (User)s.get(User.class, id);
return use;
} catch (HibernateException e) {
throw e;
} finally {
if (s != null)
s.close();
}
}
}