文字内容来自《struts2权威指南》
步骤:
1、编写持久化类PO,由POJO加映射文件构成。
2、获取Configuration(web开发中,因为hibernate.cfg.xml在默认的路径下,用不带参数的new Configuration().configure()即可)。
3、获取SessionFactory。
4、获取Session,打开事务。
5、用面向对象的方式操作数据库。
6、关闭事务,关闭Session。
对于PO与Session的关联关系,PO可有如下3个状态:
1、瞬态:如果PO实例未与Session关联过,该PO实例处于瞬态状态。
2、持久化:如果PO实例与Session关联起来,且该实例对应到数据库记录,该实例处于持久化状态。
3、脱管:如果PO实例与Session关联过,但因为Session的关闭等原因,PO实例脱离了Session的管理,称为脱管状态。
对PO的操作必须在Session管理下才能同步到数据库。Session 由SessionFactory工厂产生,SessionFactory是数据库编译后的内存镜像,通常一个应用对应一个SessionFactory对象。SessionFactory对象由Configuration对象生成,Configuration对象用来加载Hibernate配置文件。
示例:
public User getUserByUsername(String user_name){
User user=null;
Configuration conf=null;
SessionFactory sessionFactory=null;
try{
conf=new Configuration().configure();
sessionFactory=conf.buildSessionFactory();
}catch (Throwable ex){
System.err.println("Initialize SessionFactory failed"+ex);
throw new ExceptionInInitializerError(ex);
}
Session sess=sessionFactory.openSession();
Transaction tx=sess.beginTransaction();
String hql="from User where user_name='"+user_name+"'";
Query userList=sess.createQuery(hql);
List list=userList.list();
user=(User)list.get(0);
// user=(User)sess.get(User.class, new Integer("1"));
tx.commit();
sess.close();
return user;
}