Hibernate

    xiaoxiao2021-04-13  31

    一、Hibernate概述

    (一)什么是Hibernate?

               hibernate核心内容是ORM(关系对象模型)。可以将对象自动的生成数据库中的信息,使得开发更加的面向对象。这样作为程序员就可以使用面向对象的思想来操作数据库,而不用关心繁琐的JDBC。所以,Hibernate处于三层架构中的D层(持久层)。

    (二)使用Hibernate的优点

    1、Hibernate可以使用在Java的任何项目中,不一定非要使用在Java web项目中。因为Hibernate不需要类似于tomact这些容器的支持,可以直接通过一个main方法进行测试。

    2、通过下面的实例,可以发现使用Hibernate可以大大减少代码量。

    3、由于使用了Hibernate,代码中不涉及具体的JDBC语句,所以就方便了代码的可移植性。

    二、Hibernate开发的环境搭建

    (一)Hibernate的环境搭建非常简单,只需要引入Hibernate核心包(单击下载)以及Hibernate依赖包(单击下载)即可。 (二)加入数据库驱动。下面的例子中主要是采用Mysql数据库来演示的,所以在这里引入MysqL的JDBC驱动(点击下载)。 (三)提供核心配置文件hibernate.cfg.xml文件(在src文件夹下即可)。其中的配置如下(针对mysql) [html]  view plain  copy <!DOCTYPE hibernate-configuration PUBLIC       "-//Hibernate/Hibernate Configuration DTD 3.0//EN"       "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">      <hibernate-configuration>       <session-factory >           <!-- mysql数据库驱动 -->           <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>           <!-- mysql数据库名称 -->           <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>           <!-- 数据库的登陆用户名 -->           <property name="hibernate.connection.username">root</property>           <!-- 数据库的登陆密码 -->           <property name="hibernate.connection.password">root</property>           <!-- 方言:为每一种数据库提供适配器,方便转换 -->           <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>                  </session-factory>   </hibernate-configuration>  

    三、HIbernate第一个实例

    该实例的目录结构如下 说明:最后一个HIBERNATE3里面包含了所有的需要引用的jar包 1、新建一个普通的java项目,按照上面的步骤引入相关的jar包和配置文件 2、建立User实体类 [java]  view plain  copy import java.util.Date;      public class User {       private String id;       private String username;       private String password;       private Date createTime;       private Date expireTime;              public String getId() {           return id;       }       public void setId(String id) {           this.id = id;       }       public String getUsername() {           return username;       }       public void setUsername(String userName) {           this.username = userName;       }       public String getPassword() {           return password;       }       public void setPassword(String password) {           this.password = password;       }       public Date getCreateTime() {           return createTime;       }       public void setCreateTime(Date createTime) {           this.createTime = createTime;       }       public Date getExpireTime() {           return expireTime;       }       public void setExpireTime(Date expireTime) {           this.expireTime = expireTime;       }   }   2、提供User.hbm.xml文件,完成实体类的映射 [html]  view plain  copy <?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.example.hibernate.User">           <id name="id">               <generator class="uuid"/>           </id>           <property name="username"/>           <property name="password"/>           <property name="createTime"/>           <property name="expireTime"/>       </class>   </hibernate-mapping>   其中的property标签是将要生成是数据库表中的字段,在这里不用关心各个字段是什么类型的。因为Hibernate会根据上面的实体类中属性的类型来决定将来表中字段的类型 3、配置hibernate.cfg.xml文件 [html]  view plain  copy <hibernate-configuration>       <session-factory >           <!-- mysql数据库驱动 -->           <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>           <!-- mysql数据库名称 -->           <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>           <!-- 数据库的登陆用户名 -->           <property name="hibernate.connection.username">root</property>           <!-- 数据库的登陆密码 -->           <property name="hibernate.connection.password">root</property>           <!-- 方言:为每一种数据库提供适配器,方便转换 -->           <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>                      <span style="color:#ff0000;"><mapping resource="com/example/hibernate/User.hbm.xml"/></span>       </session-factory>   </hibernate-configuration>   注意:必须是“/”而不能是“.”。 4、生成表:编写工具类ExoprtDB.java,将hbm生成ddl [java]  view plain  copy import org.hibernate.cfg.Configuration;   import org.hibernate.tool.hbm2ddl.SchemaExport;   /**   * 将hbm生成ddl   * @author BCH   *   */   public class ExoprtDB {          public static void main(String[] args) {           //默认读取hibernate.cfg.xml文件           Configuration cfr = new Configuration().configure();                      SchemaExport export = new SchemaExport(cfr);           export.create(truetrue);       }   }   到这里就可以生成User表了,但是如果直接运行ExoprtDB.java文件是不能生成User表的。因为在mysql数据中还没有建立数据库Hibernate-first。所以在mysql控制台中通过create database hibernate-first; use hibernate-first;之后再执行ExoprtDB.java文件就可以生成表了。 5、向表中添加数据 [java]  view plain  copy import java.util.Date;      import org.hibernate.Session;   import org.hibernate.SessionFactory;   import org.hibernate.cfg.Configuration;      public class Client {       public static void main(String[] args) {           //读取配置文件           Configuration cfg = new Configuration().configure();                      SessionFactory factory = cfg.buildSessionFactory();                      Session session = null;           try{               session = factory.openSession();               //开启事务               session.beginTransaction();                              User user = new User();               user.setUsername("用户名");               user.setPassword("123");               user.setCreateTime(new Date());               user.setExpireTime(new Date());                              session.save(user);               //提交事务               session.getTransaction().commit();                          }catch(Exception e){               e.printStackTrace();               //回滚事务               session.getTransaction().rollback();           }finally{               if(session != null){                   if(session.isOpen()){                       //关闭session                       session.close();                   }               }           }       }   }   执行该java文件就可以完成向表中增加数据了,效果如下

    (四)总结

    通过上面的代码我们可以看出,在代码中没有涉及到任何有关JDBC的代码,作为开发人员只需要写好相应的实体类,然后通过配置就可以实现了表的建立以及向表中实现数据的插入。 在代码中有许多Hibernate的核心对象,例如Configuration、SessionFactory、Session等等。这些内容将在以后介绍。
    转载请注明原文地址: https://ju.6miu.com/read-669049.html

    最新回复(0)