Hibernate chapter1 认识Hibernate

<!--
	SSH三大框架之二:Hibernate框架!
	Goal:认识什么是Hibernate框架,以及它的作用,还有就是如何使用它!
-->

一,简单认识Hibernate:
	Hibernate框架的出现是为了实现使用简单的代码实现复杂的数据查询以及其他数据库的操作,与Struts不同,这个侧重于与数据库的交互!
	
二,怎样使用它:
	1.建立数据库,在Hibernate使用该数据库时配置相关信息!
	2.需要导入Hibernate类库
	3.建立实体
	4.配置实体与数据库表格的关系
	5.在Hibernage配置文件中导入实体的配置
	6.创建各种对象,并且使用它们!
	
	这里省去前面两步,从建立实体开始讲解:
	
	a)实体的建立:
	//com.shu.model
	public class ProvinceInfo{
		private int pid;
		private String pname;
		//省略getter和setter没写
	}
	
	public class CityInfo{
		private int cid;
		private String cname;
		private int pid;
		//省略getter和setter没写
	}
	
	b)配置实体与数据库表格之间的关系(建立一个xml文件,注:各个实体对应各个文件):
	
	文件命名规则:类型.hbm.xml
	CityInfo.hbm.xml&ProvinceInfo.hbm.xml
	写入一个头文件(位于Hibernate.core->hibernate3->org.habernate->habernate-mapping.dtd):
	<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    
	//开始配置
	<!--配置的格式
		<hibernate-mapping>
			<class name="实体所在类" table="数据库表格">
				<!--id为主键列必须配这个-->
				<id name="实体中的id列" column="表中的ID列">
					<!--操作方式:native表示程序不干扰数据库,该数据由数据操纵,identity,自增长-->
					<generator class="字段的控制方式"/>
				</id>
				<!--开始配置各个字段和属性了,如果两边的名称都一样的话,只写name就可以了,但是推荐是两个都写-->
				<property name="字段属性名" column="表格中的列名"/>
				<property name="字段属性名" column="表格中的列名"/>
				.....
			</class>
		</hibernate-mapping>
	-->
	
	//代码示范:
	<hibernate-mapping>
		<class name="com.shu.model.CityInfo" table="CITY">
			<id name="cid" column="cid">
				<generator class="native"/>
			</id>
			<property name="cname" column="cname"/>
			<property name="pid" column="pid"/>
		</class>
	</hibernate-mapping>
	
	c)在Hibernate配置文件中导入刚才的实体与数据库的配置文件:
	打开hibernate.cfg.xml,点击configuration那一页,找到mapping专栏,点击add进行添加即可!
	
	d)创建对象,使用对象中的方法进行数据库的各种操作:
	
	//1.首先要创建Configuration对象,并且千万要记得同时配置文件!
	Configuration cfg=new Configuration().configure();
	
	//2.根据Configuration对象得到SessionFactory对象
	//这里有个很好的记忆方法,Factory工厂是建设起来的,所以要build
	SessionFactory sf=cfg.buildSessionFactory();
	
	//3.在根据sessionFactory创建session对象
	Session session=sf.openSession();
	
	//4.在根据session对象创建Transaction对象
	Transaction trans=session.beginTransaction();
	
	//添加
		a)创建对象
			CityInfo ci=new CityInfo();
		b)赋值:
			ci.setCname("一个不会想起你的地方");
			ci.setPid(0);
		c)调用save方法把数据保存到数据库
			session.save(ci);
	
	//删除(自己测试了一下,不知道这个是这个样子还是我代码有误,只有当实体的id列赋了值才会根据那个ID进行数据删除,否则没用!)
		a)创建对象
			CityInfo ci=new CityInfo();
		b)赋值:
			ci.setCid(0);
		c)调用delete方法进行删除
			session.delete(ci);
			
	//修改(这个是根据ID列来进行修改的~至少我的是这样):
		a)创建对象
			CityInfo ci=new CityInfo();
		b)赋值:
			ci.setCid(1);
			ci.setCname("一个永远都会记起你的地方");
			ci.setPid(2);
		c)调用修改的方法
			session.update(ci);
			
	//查询(目前还就只知道根据ID进行查询):
		//查询22号城市的详细信息
		CityInfo ci =(CityInfo)session.get(CityInfo.class,22);
	
	//最后不能忘记操作完毕后要提交事物,以及关闭session(我测试了一下,commit()并不会关闭session)
	//如果不commit()的话,你所做的对数据的增删改都不会同步到数据库!
	trans.commit();
	session.clear();
	session.close();
	
<!--
Author:Lovingshu's Forever
Date:2011-11-07 20:36
Remark:The harder you tried,the more you get!When I came back from my Hometown at The National's Day~
I changed!I'm not try hard ever~,not pay my attention on my study but games~I really be addicted in games those
time,I must change it~or my future will be dark as the time in high school!
By the way~tomorrow is [Call Of Duty 8:Modern warfare 3]'s pub day~and the birthday of mine~
--> 

你可能感兴趣的:(Hibernate,数据库,session,Class,getter,setter)