Hibernate框架(一)

来源:互联网 发布:淘宝网男休闲皮鞋 编辑:程序博客网 时间:2024/05/17 04:44

(一:)Hibernate是一个持久层开源的,轻量级的,对象关系映射的框架,让程序员养成面向对象编程的思想,它是对JDBC的封装

(二:)关于它工作的流程如下所示:

           (1)加载核心配置文件和ORM映射文件

           (2)获取sessionfactory的工厂对象

           (3)获取操作数据的session对象

           (4)开启事务

           (5)操作数据

           (6)提交事务

           (7)关闭资源

(三)首先我们需要利用Maven工具去创建项目,然后导入依赖(需要注意一个坐标问题)

(四)创建Hibernate的核心配置文件

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration>    <session-factory>    <!-- 连接数据库所需要的四大参数 -->        <property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property>        <property name="hibernate.connection.password">root</property>        <property name="hibernate.connection.url">jdbc:mysql:///day2</property>        <property name="hibernate.connection.username">root</property>        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>              <!-- 核心配置的修改,要想在工具类中使用本地线程,需要在配置文件中添加此项配置 -->        <property name="hibernate.current_session_context_class">thread</property>        <!-- 此处是打印SQL语句的命令,但是你想要去打印,容易丢的东西true -->         <property name="hibernate.show_sql">true</property>         <property name="hibernate.format_sql">true</property>        <!--  格式化的方式打印SQL -->         <mapping resource="com/qf/pojo/Car.hbm.xml"/>    </session-factory></hibernate-configuration>

(五)创建实体类(包含属性及set和get方法),且创建ORM思想的配置文件(**.hbm.xml)

<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><!-- Generated 2017-8-30 8:23:25 by Hibernate Tools 5.2.1.Final --><hibernate-mapping><!-- name为实体类的路径     table为数据库表的表名 -->    <class name="com.qf.pojo.Tch" table="tch" catalog="hibernate" optimistic-lock="version">        <!-- 主键 -->        <id name="tid" type="java.lang.Integer">            <column name="tid" />            <!-- 关于主键的生成方式,请看下边的内容 -->            <generator class="identity" />        </id>        <!-- 对应的实体类的属性名和在数据库中字段的字段名 -->        <property name="tchName" type="string">            <column name="tch_name" length="100" />        </property>        <property name="tchSex" type="string">            <column name="tch_sex" length="100" />        </property>    </class></hibernate-mapping>

(六)将核心的配置文件加载到Hibernate.cfg.xml中,利用的是mapping这一个节点

(七)可以进行一次测试(关于实体类以及实体类的配置文件可以利用反向工程区自动生成)

在数据库中没有表的情况下,可以利用节点

<property name="hibernate.hbm2ddl.auto">update</property>

关于UPDATE建议使用这个,还有其他的几种类型的参数

关于测试的代码如下

public static void main(String[] args) {//加载配置Configuration configure = new Configuration().configure("hibernate.cfg.xml");//得到SessionFactory sessionFactory = configure.buildSessionFactory();//初始化表}
此处如果有兴趣可以写一个工具类,一个数据库只需要一个工厂就可以了,即sessionfactory是线程安全的

(八)现在已经完成了配置,现在就可以进行基本的CRUD操作了(这些操作是利用工具类写的)

想要利用Threadlocal,就需要在配置文件中添加一个节点

<!-- 核心配置的修改,要想在工具类中使用本地线程,需要在配置文件中添加此项配置 -->
        <property name="hibernate.current_session_context_class">thread</property>

//添加数据      public void addBookIf(BookInfo bookinfo){      Session session = Hibernate.getSession();      Transaction transaction = session.beginTransaction();      Serializable save = session.save(bookinfo);      transaction.commit();      session.close();      }   
  public void findById(long id){      //查找数据      Session session = Hibernate.getSession();      BookInfo info = session.load(BookInfo.class, id);        System.out.println(info.getBookType().getTypeName());      }
 public void upBookIf(BookInfo bookinfo){      //更新数据      Session session = Hibernate.getSession();      Transaction beginTransaction = session.beginTransaction();      session.update(bookinfo);      beginTransaction.commit();      session.close();      }
 public void delBookIf(BookInfo bookinfo){      //删除数据      Session session = Hibernate.getSession();      Transaction transaction = session.beginTransaction();      session.delete(bookinfo);      transaction.commit();      session.close();      }







           

         

原创粉丝点击