发表于: 2017-11-09 22:13:03

1 785


一.今天完成的主要事情

1.学习Hibernate框架的基础知识

(1).Hibernate是什么?ORM是什么?

Hibernate是一个高性能的对象关系型持久层框架,是遵循ORM的持久层框架

ORM(对象关系型持久层框架):利用描述对象和数据库表之间映射的元数据,自动把java应用程序中的对象持久化到关系型数据库表中,实现通过对java对象的操作,就可以完成对数据库表的操作.

使用ORM的优点:应用面向对象思想,只操作java对象,隐藏查询sql细节,java对象基于业务而不是数据库表,自动生成事务和键.

(2):Hibernate出现的背景是什么?解决了什么问题?

       Hibernate是遵循ORM协议的持久层框架,2001年由 Gavin King创建.

      Hibernate之前:JDBC处理大型业务时有几个痛点,一是代码量大,二是SQL繁琐,三是重复冗余的操作太多.

Hibernate的出现解决了以上问题,提高编程的效率

Hibernate优势:

Hibernate 使用 XML 文件来处理映射 Java 类别到数据库表格中,并且不用编写任何代码。

为在数据库中直接储存和检索 Java 对象提供简单的 APIs。

如果在数据库中或任何其它表格中出现变化,那么仅需要改变 XML 文件属性。

抽象不熟悉的 SQL 类型,并为我们提供工作中所熟悉的 Java 对象。

Hibernate 不需要应用程序服务器来操作。

最小化与访问数据库的智能提取策略。

提供简单的数据询问

(3).Hibernate框架的结构是什么?执行流程如何?

Hibernate底层封装了JDBC,JAT,JNDI,上层用POJO和java程序连接,而中间的核心功能接口有五个,Configuration,SqlSessionFactory,Session,Query,Transaction.

大致的执行流程为先创建configuration对象,configuration对象读取配置文件,创建sqlsessionFactory对象,通过该对象获取session对象,接着通过session对象创建transaction对象,接着通过session对象对数据库进行访问,然后提交操作结果,最后关闭session

2.实现用Hibernate框架完成基本的增删改查操作

配置文件有两个,一个是hibernate.cfg.xml文件,是Hibernate框架的全局配置,还有一个是User.hpm.xml文件,该配置文件定义了每一个单独的对象和数据库表之间的映射关系,hibernate.cfg.xml一个项目或者一个数据源只有一个,但是User.hpm.xml可以有多个

首先是hibernate.cfg.xml配置文件

<hibernate-configuration>

    <session-factory>

        <!--方言,指定使用哪种类型的数据库-->

        <property name="hibernate.dialect">

            org.hibernate.dialect.MySQLDialect

        </property>

        <!--数据库链接驱动-->

        <property name="hibernate.connection.driver_class">

            com.mysql.cj.jdbc.Driver

        </property>

        <!-- 数据库链接URL -->

        <property name="hibernate.connection.url">

            jdbc:mysql://localhost:3306/student?serverTimezone=UTC

        </property>

        <!--数据库用户名,密码-->

        <property name="hibernate.connection.username">

            root

        </property>

        <property name="hibernate.connection.password">

            123456789

        </property>

        <!--c3p0数据库链接池配置-->

        <property name="c3p0.max_size">100</property>

        <property name="c3p0.min_size">10</property>

        <property name="c3p0.acquire_increment">10</property>

        <property name="c3p0.max_statements">5</property>

        <property name="c3p0.idle_test_period">60</property>

        <!-- 打印出sql语句 -->

        <property name="hibernate.show_sql">true</property>

        <!--格式化sql语句-->

       <!-- <property name="hibernate.format_sql">true</property>-->

        <!--数据库定义属性-->

        <!--hbm2ddl.auto 取值

                    none    :不同Hibernate自动生成表

                    create  :每次都会创建一个新的表(测试用)

                    create-drop:   每次都会创建一个新的表,执行程序结束后删除这个表(测试用)

                    update:         如果数据库中有表,使用原来的表,如果没有表,创建一个表,可以更新表结构

                    validate:       只会使用原有的表,对映射关系进行校验-->

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

        <property name="hibernate.connection.autocommit">true</property>

        <!-- 指定java对象和数据库表映射文件的位置 -->

        <mapping resource="mapper/User.hbm.xml"/>

    </session-factory>

</hibernate-configuration>

具体的配置含义已经注释标明了

然后是User.hpm.xml文件

然后是类中的代码

先初始化配置

然后再调用具体的方法


其他的不贴了,也差不多.感觉确实是不用再写sql语句了,Hibernate还有一些其他的功能,明天再继续学习吧

二.明天的计划

1.继续学习Hibernate框架,将Hibernate框架的注解和spring整合再一起,减少配置文件和代码量

2.如果有时间,再继续学习Hibernate的query和criteria动态查询的方式

三.遇到的问题

暂无

四,收获

Hibernate的基本概念和基本用法

五.项目进度情况

属于自己的部分基本完成,现在继续学习,巩固基础


 


返回列表 返回列表
评论

    分享到