发表于: 2017-11-09 22:13:03
1 786
一.今天完成的主要事情
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的基本概念和基本用法
五.项目进度情况
属于自己的部分基本完成,现在继续学习,巩固基础
评论