一 Hibernate简单介绍
一.一 Hibernate框架的作用
Hibernate是数据库层框架,做持久化操作。 以前所讲的Struts2是Web层框架。
Hibernate 是全自动的ORM框架,可以代替我们自动生成SQL语句,完成基本的CRUD操作。
想一想,我们在SE阶段 自己写 JDBC,是不是很麻烦啊. Hibernate 就是帮我们简化 JDBC操作的。
一.二 Hibernate的下载地址
官方下载地址是: http://hibernate.org/orm/releases/5.2/
下载完成后的目录结构是:
其中documentataion表示的是开发文档,在里面有一个javadocs/index.html 文件,这是文档首页,点击进去之后,可以方便的查看Hibernate官方给出的API.
lib文件夹,存储的是关于Hibernate开发中,经常用到的Jar包。
有一个required文件夹,表示必须的。开发中,将required文件夹下的所有Jar包全部复制到项目工程中去。 一共是10个。
与C3P0整合的Jar包在\lib\optional\c3p0文件夹下。(C3P0连接池)
与EhCache整合的Jar包在\lib\optional\ehcache文件夹下。(Cache缓存)
Project文件夹为Hibernate所给的一些事例,具体为相关Jar包的源代码。
里面有一个etc文件夹,下面为一些常用的配置文件
一.三 ORM 对象关系映射
ORM,指得是Object Relation Mapping 对象关系映射。 简单的来说,就是将以前对具体数据表的操作转换成对相应的实体的操作。
如对数据表User进行相应的CRUD操作,转换成对User类JavaBean的相应的操作。
相应的映射规则:
将表------>映射成实体
将视图------->映射成实体。
将表中字段------->映射成实体的属性
将表与表之间的外键关系,一对多,多对多,一对一关系映射成实体类之间的一对多,多对多,一对一关系。
二. 开发环境的具体搭建
二.一 创建项目所对应的数据库
Hibernate只会自动创建表,不能创建数据库。所以数据库必须要自己手动创建。 利用Navicat For MySQL工具创建一个数据库,取名称为hibernate。 采用utf-8编码方式。
二.二 导入相应的Jar包(新建普通的Java项目即可)
不要忘记导入MySQL 数据库的jar包。
二.三 创建相应的实体类
如User 员工类
在pojo包下,创建User.java
package com.yjl.pojo; import java.io.Serializable; /** @author: 两个蝴蝶飞 @date: 2018年9月29日 下午7:53:39 @Description Hibernate操作时相应的实体类,实现序列化 */ public class User implements Serializable{ private static final long serialVersionUID = 1L; /** * @param 主键id 用Integer包装类 * @param userName 用户名 * @param password 密码 * @param sex 性别 * @param age 年龄 * @param description 相关描述 */ private Integer id; private String userName; private String password; private String sex; private Integer age; private String description; public Integer getId() { return id; } public void setId(Integer 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 String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } }
二.四 创建User.hbm.xml文件
在与实体类User同级的目录下,即也在pojo包下,创建一个配置文件.xml, 取名称为实体类.hbm.xml。
创建User.hbm.xml文件:
<?xml version="1.0" encoding="UTF-8"?> <!-- 引入相应的约束 --> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <!--暂时不介绍具体的标签什么意思--> <hibernate-mapping package="com.yjl.pojo"> <!-- 具体的实体类 --> <class name="User" table="user"> <!-- 主键 --> <id name="id" column="id"> <generator class="native"></generator> </id> <!-- 其余属性 --> <property name="userName"></property> <property name="password"></property> <property name="sex" ></property> <property name="age"></property> <property name="description"></property> </class> </hibernate-mapping>
二.五 创建Hibernate框架 全局配置文件 hibernate.cfg.xml
这个文件是Hibernate官方定义的文件,不能改名称.(与Spring整合后可以改,但也不建议改),且必须要放在src目录下,即源文件目录下。
其中cfg指的是 config的缩写。
hibernate.cfg.xml文件:
<?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">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate?characterEncoding=utf8</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">abc123</property> <!-- 关于Hibernate的相应配置 --> <!-- 引入方言 --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.show_sql">true</property> <property name="hibernate.hbm2ddl.auto">update</property> <property name="hibernate.format_sql">true</property> <!-- 引入相应的约束文件 ctrl点击时可以正确进入--> <mapping resource="com/yjl/pojo/User.hbm.xml"/> </session-factory> </hibernate-configuration>