`
youngJava
  • 浏览: 16182 次
  • 性别: 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 总结】 Hibernate 是一个流行的开源对象关系映射(ORM)框架,它简化了Java应用程序对数据库的操作。通过提供一套API和元数据,Hibernate允许开发者将业务对象直接映射到数据库表,从而避免了...

    hibernate文档总结,技术汇总,PDF版的,hibernate简明参考文档

    总结来说,Hibernate是一个强大的ORM框架,它极大地简化了Java应用的数据库操作,提高了开发效率,并提供了高级特性如缓存、事务管理等。通过深入理解和熟练使用Hibernate,开发者可以构建更高效、更易于维护的...

    Hibernate大总结/Hibernate面试题大全

    以上总结了Hibernate的一些核心概念和面试中可能遇到的关键知识点。了解这些概念有助于更好地掌握Hibernate框架的使用,以及如何高效地利用Hibernate进行数据库操作。此外,对于面试者而言,熟悉这些概念也能帮助...

    Hibernate 经典总结

    1. 简单易用:对于程序员来说,使用 Hibernate 可以降低开发复杂度。 2. 开源:允许开发者查看和修改源代码,增强了定制性。 3. ORM 框架:专注于持久化层,提供了对象和关系的映射功能。 4. 数据库兼容:支持多种...

    Hibernate课程的总结

    **标题:“Hibernate课程的总结”** 在学习Hibernate框架的过程中,我们深入探讨了它在Java企业级应用中的核心地位。Hibernate作为一个强大的对象关系映射(ORM)工具,它简化了数据库与Java对象之间的交互,消除了...

    hibernate简单的入门案例

    **hibernate简单的入门案例** Hibernate 是一个强大的Java对象关系映射(ORM)框架,它为开发者提供了在Java应用程序中操作数据库的强大工具。这个入门案例将带你了解如何使用Hibernate进行基本的操作,包括配置、...

    Hibernate 框架总结

    从Hibernate的核心概念、工作原理到其实现细节,Hibernate框架提供了一套全面的解决方案,使得数据库操作更加简单和高效。 首先,Hibernate框架的核心接口包括Session、SessionFactory、Configuration、Transaction...

    SSH之Hibernate总结

    在接触Hibernate时,我们通常会从一个简单的“HelloWorld”示例开始,这包括创建实体类、配置Hibernate、编写Session工厂和Session操作,以此理解如何将Java对象与数据库表进行关联。 2. Hibernate原理模拟 - 什么...

    Hibernate方法总结

    总的来说,HibernateTemplate提供了一组强大的方法来简化Hibernate的日常操作,涵盖了从简单的数据存取到复杂的数据库操作,极大地提升了开发效率。在实际应用中,根据数据量、性能需求以及业务逻辑,选择合适的方法...

    Hibernate简单的demo

    这个“Hibernate简单的demo”是为了帮助初学者理解并快速上手Hibernate框架而设计的。 **核心概念** 1. **实体(Entity)**: 在Hibernate中,实体通常对应数据库中的表,它们是Java类,通过注解或XML配置与数据库...

    一个Hibernate的简单实例

    总结来说,"一个Hibernate的简单实例"是Java开发者学习Hibernate框架的起点,它涵盖了从配置文件设置到实体类设计,再到数据库操作的基本步骤。通过这个实例,你可以深入理解Hibernate如何将Java对象和数据库表进行...

    Struts+Spring+hibernate学习总结

    【Struts+Spring+Hibernate 学习总结】 SSH(Struts、Spring、Hibernate)是Java Web开发中的一个经典企业级应用架构,它将MVC设计模式应用到Web应用的各个层次,实现了良好的分层和解耦。这篇学习总结旨在帮助读者...

    Hibernate学习心得

    PO被设计为简单的Java对象(Plain Old Java Object,POJO),即不包含任何特定框架的代码,只包含业务逻辑和数据。为了使PO具备持久化能力,我们需要在对象上添加持久化注解,如@Entity、@Table、@Column等,这些...

    hibernate3 最简单实现项目

    总结来说,这个“hibernate3 最简单实现项目”旨在演示如何在Java项目中使用Hibernate3进行基本的数据库查询。通过理解和实践这些步骤,开发者可以掌握Hibernate3的基础用法,为更复杂的ORM操作打下坚实基础。

    hibernate简易网上银行

    在“hibernate简易网上银行”项目中,我们利用Hibernate技术来构建一个简单但功能完整的网上银行系统。这个系统能够帮助用户进行基本的银行交易操作,如存款、取款、转账等,同时实现数据持久化,确保信息的安全存储...

    Hibernate总结——课程管理

    本教程将深入探讨如何使用Hibernate来实现一个简单的课程管理系统,涵盖多对多关联映射以及CRUD操作。 ### Hibernate概述 Hibernate是一个开源的ORM框架,它允许开发者使用Java对象来表示数据库中的记录,从而避免...

Global site tag (gtag.js) - Google Analytics