框架是用来提升开发效率的,封装好了一些功能,我们需要使用这些功能时调用即可,不需要再手动实现,所以框架可以理解为一个半成品的项目,只需要懂得如何驾驭这些功能即可。
使用hibernate数据库可以以面向对象的方式来完成,不需要书写sql语句。hibernate是一个对象关系映射。orm分成四级,hibernate属于四级,也就是完全面向数据库操作的框架,mybatis属于二级,dbutils属于第一级。
首先是数据库驱动包,然后是hibernate所需的包。
随便搞个表即可。
首先导入约束
然后配置表与实体对象的关系
首先是hibernate-mapping根元素,在根元素中有一属性为package,若将包名写上后,在其下的内容即可不写包名前缀。
class元素用来配置与表的对应关系,name是完整类名,table是数据库表名。
id元素用来配置主键映射的属性,name填写主键对应属性名,column(可选)填写表中的主键列名,默认是使用属性名。
generator元素是主键生成策略。
property元素是除id之外的普通属性的映射,name填写属性名,column填写列名。type(可选):填写列(属性)的类型,hibernate会自动检测实体的属性类型,但是自己写也可以,每个类型有三种填法,java类型、hibernate类型、数据库类型。
java类型的填写:
hibernate类型的填写:
数据库类型的填写:
自动指定挺好,建议不写。not-null(可选):配置该属性(列)是否不能为空.默认值:false。length(可选):配置数据库中列的长度,默认值是数据库类型的最大长度。
主配置文件的位置只能在src下,并且必须命名为hibernate.cfg.xml。
依次打开文件,找到etc下的hibernate.properties文件
必选属性配置(5个):
因为用的是mysql数据库所以在文件中搜索mysql,将其粘贴到主配置文件中进行配置。
url中的三条斜杠代表的是本地的意思。
分别是数据库驱动,数据库url,数据库连接用户名,数据库连接密码,数据库方言。
数据库方言:比如之前分页用的limit就是方言,在Oracle中将不能使用,在不同的数据库中,sql语法略有区别,指定方言可以让hibernate框架在生成sql语句时,针对数据库的方言生成。
sql99标准:DDL :定义语言(库表的增删改查) DML :操纵语言(增删改查) DCL:控制语言 (事物权限)
注意:mysql在选择方言时要选择最短的方言,因为其针对不同的引擎,所以有几个不同的。
可选配置:
在文件中搜索show,并将下图内容复制到主配置文件中。
表示将使用的sql语句格式化(语法缩进)打印出来。
在文件中搜索hbm2,并将下图内容复制到主配置文件中。
表示自动导出表结构,自动建表,当数据库没表时会自动创建。
create:是自动建立表,每次框架运行都会创建新的表,原有的表将会被覆盖,表数据丢失。(开发环境中测试使用)
drop:自动创建表,每次框架运行结束后都会自动删除。
update(推荐使用):自动创建表,如果有将不会在自动生成,如果表有变动,自动更新表(不会删任何数据)。
validate:校验,不自动生成表,每次启动会校验数据库表是否正确,校验失败会抛出异常。
元数据引入配置:
引用orm元数据,注意填写src下的路径。
运行结果:
Configuration功能:配置加载类,用于加载主配置,orm元数据(orm元数据是对象与数据库表的那个映射文件)加载。
SessionFactory对象:用于创建操作数据库核心对象session对象的工厂,简单说功能就是创建session对象。
注意:1.sessionfactory 负责保存和使用所有配置信息,消耗内存较大。
2.sessionfactory属于线程安全的对象设计。
结论:保证在web项目中只创建一个sessionfactory
session对象的功能:session往往是一次会话,在这里表达hibernate框架与数据库之间的连接(会话).session类似于jdbc年的connection对象。还可以完成数据库中数据的增删改查。session是hibernate操作数据库的核心对象。
transaction对象用来操作事务
运行结果:
检查发现数据已删