`
youngJava
  • 浏览: 15721 次
  • 性别: Icon_minigender_2
  • 来自: 长沙
社区版块
存档分类
最新评论

hibernate简单总结

阅读更多
        虽然,三大框架已经学了两大框架了,但是,都还只是有一个简单的印象。现在就总结一下hibernate的简单印象。
         Hibernate把开发者从数据库编程中分离出来,在数据库外裹了一层面向对象的外衣,Java程序中所有进出数据库的操作都交由Hibernate来处理。它会为我们自动生成sql语句来操作数据库。
         有了Hibernate后,我们就不再需要写繁琐的sql语句,也不用把实体对象字段一个个拆开又组装。Hibernate还提供了一个和sql语句类似的hql语句,结合Hibernate后功能更为强大,能根据实体的状态来自动对数据库进行更新和插入。
        hql语句操作数据库,实际上也是要转化成标准的sql语句的,Hibernate根据用户所编写的xml映射文件来实现hql语句到sql语句的自动转换。xml映射文件是Hibernate中最为关键的配置文件,他定义了实体和数据表之间的联系,架起了两者间的桥梁。


     将hibernate跑起来,主要有以下几步:

     1、在http://www.hibernate.org/ 上下载hb。将antlr-2.7.6.jar、commons-collections-3.1.jar、dom4j-1.6.1.jar、hibernate3.jar、javassist-3.9.0.GA.jar、jta-1.1.jar、slf4j-api-1.5.8.jar、slf4j-simple-1.6.1.jar、mysql-connection-java-5.0.5-bin.jar这几个包导入到所建的项目下。

     2、配置hb的配置文件hibernate.cfg.xml,是hb的控制核心,
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"	
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
	<session-factory>
	  	<!-- 让hb在运行时显示执行的sql语句 -->
	  	<property name="show_sql">true</property>
	  	<!-- 使显示的sql格式化 -->
	  	<property name="format_sql">true</property>
	  	<!-- 设定sql的方法,是mysql -->
	  	<property name="dialect">
	  		org.hibernate.dialect.MySQLDialect
	  	</property>	
	  	<!-- jdbc驱动类的名字 -->
	  	<property name="connection.driver_class">
	  	     com.mysql.jdbc.Driver
	  	</property>
	  	<!-- 数据库连接的url配置 -->
	  	<property name="connection.url">
	  		jdbc:mysql://localhost:3306/mynetjavablog
	  	</property>
	  	<!-- 数据库用户名和密码的配置 -->
	  	<property name="connection.username">root</property>
	  	<property name="connection.password">netjava</property>
	  	</session-factory>	
</hibernate-configuration>

     以上配置是必须的。与数据库的连接,以前在MVC里,这些都是写在连接数据库的工具类里面的,现在只需在这个配置文件里进行配置就OK了。

       3.将hb的配置文件配置好后,接下来就是pojo类和对应的映射文件Userinfo.hbm.xml
       在数据库中事先创建好了数据库和userinfo表,pojo类Userinfo类的属性一一对应userinfo表的字段。关键的是映射文件,映射文件中的配置如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping  PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
	<!-- 指定类到表的映射 -->
	<class name="hibernate.pojo.Userinfo" table="userinfo">
		<!-- 主键id的生成机制:native将根据数据库自动生成,mysql是自增长方式 -->
		<id name="id" column="id">
			<generator class="native"></generator>
		</id>
		<!-- 设定Userinfo类中每个属性到数据库中表的每个列名的的映射 -->
		<property name="username" column="username"></property>
		<property name="pwd" column="pwd"></property>
		
	</class>
</hibernate-mapping>

       <class name="hibernate.pojo.Userinfo" table="userinfo">这句指明了类到表的映射;
        <id name="id" column="id">
<generator class="native"></generator>
       </id>这是主键的生成;
        <property name="username" column="username"></property>以后的属性都按此进行映射。
        另外将此映射文件配置好后,还要记得将它配置到hb的核心控制文件hibernate.cfg.xml中。<session-factory></session-factory>的结束标签前加上<mapping resource="hibernate/pojo/Userinfo.hbm.xml"/>。这里还要注意将包名中的点改为斜线。

      4、获取hb中的Session对象的工具类HBUtils。取得根据hibernate.cfg.xml配置中的数据库的Session对象,类似于java.sql.connection对象;
 
public class HBUtils {
	private static SessionFactory sessionFactory;
	//取得根据hibernate.cfg.xml配置中的数据库的Session对象,类似于java.sql.connection对象
	public static Session getSession(){	
		return sessionFactory.openSession();		
	}
	//静态块,用于从hibernate.cfg.xml配置文件中初始化sessionFactory
	static {
		try{
			sessionFactory=new Configuration().configure().buildSessionFactory();
		}catch(Throwable ex){
			throw new ExceptionInInitializerError(ex);
		}
	}
}


       5、现在就可以写Userinfo的操作类UserinfoDAO类了;
public class UserinfoDAO {

	//保存一个用户对象到数据库,保存成功后返回id
	public int saveUserinfo(Userinfo user){
		org.hibernate.Session session=HBUtils.getSession();//得到session
		org.hibernate.Transaction tr=session.beginTransaction();
		tr.begin();//取得事物对象,开启事物
		session.save(user);//保存用户
		tr.commit();//提交事物
		session.close();
		return user.getId();
	}
	//从数据库中取得指定id的用户对象
	public Userinfo getUserinfoByID(int id){
		org.hibernate.Session session=HBUtils.getSession();//得到session
		Object object=session.get(hibernate.pojo.Userinfo.class,id);
		session.close();
		return (Userinfo)object;
	}
}


     6、写一个测试类,进行测试即可,测试类代码
public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Userinfo user=new Userinfo();
		user.setUsername("Hibernate测试1");
		user.setPwd("hb");
		UserinfoDAO userinfoDAO=new UserinfoDAO();
		int id=userinfoDAO.saveUserinfo(user);
		System.out.println("保存一个用户成功,保存的id是:"+id);
		Userinfo lookUser=userinfoDAO.getUserinfoByID(id);
		System.out.println("取得的用户是:"+lookUser.toString());

	}

}



        与MVC比较有相似的,也有不同的,hibernate也要取得数据库的连接,写操作类对数据库进行操作,不过不同之处在与讲数据库的连接都放到配置文件里了,我们就不在需要自己写代码连接了,还有pojo类与数据库中的表的对应也放到了一个映射文件中了,而且,连slq语句都不用我们自己写了。以上就是我对hibernate的简单认识。
         





分享到:
评论

相关推荐

    Hibernate 简单 PPT 总结

    关于 Hibernate 的学习总结ppt 内包含了 inverse 的看法与eclipse安装 Hibernate 插件

    Hibernate总结——课程管理

    简单的Hibernate实现Java通过多对多关联映射,进行学生课程管理。

    review.hibernate.zip

    hibernate 简单总结附件 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,...

    hibernatespring简单文档

    hibernatespring简单文档 自己总结

    学习hibernate必看ppt--总结的很全面

    添加Hibernate库文件视频操作,01_Hibernate原理及简单使用,一对多,多对一,多对多 关联映射,Hql,hibernate创建事例...

    Hibernate_二级缓存总结

    缓存可以简单的看成一个 Map ,通过 key 在缓存里面找 value 。 一、缓存简介 Cache In Hibernate HIBERNATE 中的 CACHE 有两级 . 一级是在 Session 范围内的 CACHE . 即每个 Session 有自己的一个 CACHE, 当前...

    Hibernate对象对应关系总结

    本文主要介绍了对象之间的对应关系,包含对象之间一对一,一对多双向,多对多的关系,另外简单介绍了二级缓存和分页

    hibernate基本配置

    学过hibernate自己做得简单总结

    Hibernate+中文文档

    1.5. 总结 2. 体系结构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 2.5. 上下文相关的(Contextual)Session 3. 配置 3.1. 可编程的配置方式 3.2. 获得...

    hibernate3.2中文文档(chm格式)

    4.1. 一个简单的POJO例子 4.1.1. 实现一个默认的(即无参数的)构造方法(constructor) 4.1.2. 提供一个标识属性(identifier property)(可选) 4.1.3. 使用非final的类 (可选) 4.1.4. 为持久化字段声明访问...

    HibernateAPI中文版.chm

    4.1. 一个简单的POJO例子 4.1.1. 实现一个默认的(即无参数的)构造方法(constructor) 4.1.2. 提供一个标识属性(identifier property)(可选) 4.1.3. 使用非final的类 (可选) 4.1.4. 为持久化字段声明访问...

    struts2+spring+hibernate整合示例

    SSH整合示例(详情见我博客专栏)之前的博客我们总结了spring基础、spring分别整合struts2、hibernate、mybatis等,今天我们来同时整合下 struts、spring、hibernate,也就是所谓的 ssh 。 整合流程: 1 首先整合...

    MyEclipse Hibernate 快速入门(电子书)

    我们将全程带领你来开发一个非常简单的 Java Hibernate 应用. 对于这个教程没有包含到的问题和概念, 我们推荐你去参考 资源 部分列出的 Hibernate 资源. 这个文档展示了如何进行下列工作: 1.为 Java 项目添加 ...

    Hibernate中文详细学习文档

    1.5. 总结 2. 体系结构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 2.5. 上下文相关的(Contextual)Session 3. 配置 3.1. 可编程的配置方式 3.2. 获得...

    Hibernate 中文 html 帮助文档

    1.5. 总结 2. 体系结构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 2.5. 上下文相关的(Contextual)Session 3. 配置 3.1. 可编程的配置方式 3.2. 获得SessionFactory 3.3...

    hibernate 体系结构与配置 参考文档(html)

    总结 2. 体系结构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 2.5. 上下文相关的(Contextual)Session 3. 配置 3.1. 可编程的配置方式 3.2. 获得SessionFactory ...

    Hibernate教程

    2.4. 总结 3. 体系结构(Architecture) 3.1. 概况(Overview) 3.2. 实例状态 3.3. JMX整合 3.4. 对JCA的支持 4. 配置 4.1. 可编程的配置方式 4.2. 获得SessionFactory 4.3. JDBC连接 4.4. 可选的配置属性 ...

    struts2 spring hibernate整合要点、注意点

    struts2 spring hibernate 整合: 三者整合通过查询oracle数据库中的用户登录界面,最简单的配置。 struts.xml web.xml application.xml怎样配置,怎样依赖注入才能实现整合,显示出页面?请看这篇文档

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    4.1. 一个简单的POJO例子 4.1.1. 实现一个默认的(即无参数的)构造方法(constructor) 4.1.2. 提供一个标识属性(identifier property)(可选) 4.1.3. 使用非final的类 (可选) 4.1.4. 为持久化字段声明访问...

Global site tag (gtag.js) - Google Analytics