zoukankan      html  css  js  c++  java
  • 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。


  • 相关阅读:
    ant实践总结
    Ubuntu安装JDK和Eclipse
    Xp下安装Ubuntu
    [Hadoop] 传智播客新版Hadoop视频教程 段海涛老师Hadoop八天完全攻克Hadoop视频教程 Hadoop开发
    Ctypes简单应用以及PyQt5等简单使用过程中遇到的部分问题
    python初探:关于闭包
    利用Nginx+Frp搭建HTTP正向代理
    C#发送邮件时提示:“不允许使用邮箱名称。服务器响应为:”的错误解决办法
    提倡IT从业人员终身学习
    打算在博客园安家了
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3333705.html
Copyright © 2011-2022 走看看