`
jishublog
  • 浏览: 866361 次
文章分类
社区版块
存档分类
最新评论

Hibernate征途(三)之CRUD

 
阅读更多

上篇博客《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。


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics