上篇博客《Hibernate征途(二)之基础与核心》介绍了Hibernate的基础内容和核心内容,这篇博客简单实践一下。第一篇博客也说过Hibernate是一种JDBC的简化方案,既然是和数据库相关的操作,自然离不开CRUD,也就是常说的增删改查:
C reate new records
R etrieve existing records
U pdate existing records
D elete existing records.
七步骤
从步骤来看,Hibernate的使用都可以分为七个步骤,如下图:
即:
- 编写实体类,配置实体类的映射。
- 创建SessionFactory
- 创建并开启一个session
- 针对session,开启事务
- 进行数据库增删改查操作
- 提交或回滚事务
- 关闭session
实例
既然说到简单,就把简单贯彻到底,下面以保存一个用户为例,注意这七个步骤的使用。
User.java
public class User { private String id; private String name; private String password; private Date createTime; private Date expireTime; /** ……对应的setters和getters **/ }
映射文件
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping > <class name="com.tgb.hibernate.User" > <id name="id"> <generator class="uuid" /> </id> <property name="name" /> <property name="password" /> <property name="createTime" /> <property name="expireTime" /> </class> </hibernate-mapping>
Utils
封装对SessionFactory和Session常用的操作。
public class HibernateUtils { private static SessionFactory factory; static{ try { //get configuration Configuration cfg=new Configuration().configure(); //create session factory factory=cfg.buildSessionFactory(); } catch (Exception e) { e.printStackTrace(); } } public static Session getSession(){ return factory.openSession(); } public static void closeSession(Session session) { if (session!=null) { if (session.isOpen()) { session.close(); } } } public static SessionFactory getSessionFactory() { return factory; } }
测试保存
public void testSave1() { Session session=null; try { //get session session=HibernateUtils.getSession(); //open transaction session.beginTransaction(); //create user User user=new User() User user =new User(); user.setCreateTime(new Date()); user.setExpireTime(new Date()); user.setName("zher"); user.setPassword("123"); //execute save session.save(bird); //commit transaction session.getTransaction().commit(); } catch (Exception e) { session.getTransaction().rollback(); e.printStackTrace(); } finally { //close session HibernateUtils.closeSession(session); } }
其它操作
save()仅是session操作的一种,除此之外,还有load()/get()、delete()、update(),使用类似不再赘述。
总结
这应该是Hibernate最简答的一个例子,这篇博客用于对上篇博客中三种状态和五个个核心接口使用的理解,下篇博客将介绍各式各样的映射,That' all。