虽然,三大框架已经学了两大框架了,但是,都还只是有一个简单的印象。现在就总结一下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 是一个流行的开源对象关系映射(ORM)框架,它简化了Java应用程序对数据库的操作。通过提供一套API和元数据,Hibernate允许开发者将业务对象直接映射到数据库表,从而避免了...
总结来说,Hibernate是一个强大的ORM框架,它极大地简化了Java应用的数据库操作,提高了开发效率,并提供了高级特性如缓存、事务管理等。通过深入理解和熟练使用Hibernate,开发者可以构建更高效、更易于维护的...
以上总结了Hibernate的一些核心概念和面试中可能遇到的关键知识点。了解这些概念有助于更好地掌握Hibernate框架的使用,以及如何高效地利用Hibernate进行数据库操作。此外,对于面试者而言,熟悉这些概念也能帮助...
1. 简单易用:对于程序员来说,使用 Hibernate 可以降低开发复杂度。 2. 开源:允许开发者查看和修改源代码,增强了定制性。 3. ORM 框架:专注于持久化层,提供了对象和关系的映射功能。 4. 数据库兼容:支持多种...
**标题:“Hibernate课程的总结”** 在学习Hibernate框架的过程中,我们深入探讨了它在Java企业级应用中的核心地位。Hibernate作为一个强大的对象关系映射(ORM)工具,它简化了数据库与Java对象之间的交互,消除了...
**hibernate简单的入门案例** Hibernate 是一个强大的Java对象关系映射(ORM)框架,它为开发者提供了在Java应用程序中操作数据库的强大工具。这个入门案例将带你了解如何使用Hibernate进行基本的操作,包括配置、...
从Hibernate的核心概念、工作原理到其实现细节,Hibernate框架提供了一套全面的解决方案,使得数据库操作更加简单和高效。 首先,Hibernate框架的核心接口包括Session、SessionFactory、Configuration、Transaction...
在接触Hibernate时,我们通常会从一个简单的“HelloWorld”示例开始,这包括创建实体类、配置Hibernate、编写Session工厂和Session操作,以此理解如何将Java对象与数据库表进行关联。 2. Hibernate原理模拟 - 什么...
总的来说,HibernateTemplate提供了一组强大的方法来简化Hibernate的日常操作,涵盖了从简单的数据存取到复杂的数据库操作,极大地提升了开发效率。在实际应用中,根据数据量、性能需求以及业务逻辑,选择合适的方法...
这个“Hibernate简单的demo”是为了帮助初学者理解并快速上手Hibernate框架而设计的。 **核心概念** 1. **实体(Entity)**: 在Hibernate中,实体通常对应数据库中的表,它们是Java类,通过注解或XML配置与数据库...
总结来说,"一个Hibernate的简单实例"是Java开发者学习Hibernate框架的起点,它涵盖了从配置文件设置到实体类设计,再到数据库操作的基本步骤。通过这个实例,你可以深入理解Hibernate如何将Java对象和数据库表进行...
【Struts+Spring+Hibernate 学习总结】 SSH(Struts、Spring、Hibernate)是Java Web开发中的一个经典企业级应用架构,它将MVC设计模式应用到Web应用的各个层次,实现了良好的分层和解耦。这篇学习总结旨在帮助读者...
PO被设计为简单的Java对象(Plain Old Java Object,POJO),即不包含任何特定框架的代码,只包含业务逻辑和数据。为了使PO具备持久化能力,我们需要在对象上添加持久化注解,如@Entity、@Table、@Column等,这些...
总结来说,这个“hibernate3 最简单实现项目”旨在演示如何在Java项目中使用Hibernate3进行基本的数据库查询。通过理解和实践这些步骤,开发者可以掌握Hibernate3的基础用法,为更复杂的ORM操作打下坚实基础。
在“hibernate简易网上银行”项目中,我们利用Hibernate技术来构建一个简单但功能完整的网上银行系统。这个系统能够帮助用户进行基本的银行交易操作,如存款、取款、转账等,同时实现数据持久化,确保信息的安全存储...
本教程将深入探讨如何使用Hibernate来实现一个简单的课程管理系统,涵盖多对多关联映射以及CRUD操作。 ### Hibernate概述 Hibernate是一个开源的ORM框架,它允许开发者使用Java对象来表示数据库中的记录,从而避免...