【Hibernate】(一)入门及原理

    xiaoxiao2021-03-25  57

    (一)简介

    Hibernate是一个开源的轻量级的框架。没有Hibernate之前,我们是直接使用sql语句对数据库进行操作。直接对数据库操作,已经不符合我们面向对象的思想了。于是ORM就应运而生了。

    什么是ORM?Object Relational Mapping。对象关系映射。就是让实体类和数据库表进行一一对应,实体类里面的属性和数据库表里的字段对应,我们不需要直接操作数据库,而通过操作表对应的实体类即可完成对数据库的操作。

    (二)搭建环境

    一、引入jar包

    二、创建一个实体类,以User为例。

    使用Hibernate时,我们不需要自己手动创建表,经过一定的配置,Hibernate会自动把表创建。

    三、配置实体类和数据库的映射关系。以User类为例,我们需要创建User.hbm.xml文件

    引入约束

    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

    在映射文件中配置数据库表对应的关系

    <hibernate-mapping> <!--1.配置类和表对应:class标签:name表示实体类(User)的全路径,table表示数据库表名称 --> <class name="cn.itcast.shop.user.vo.User" table="user"> <!-- 2.配置实体类属性和表字段一致 id标签:name是实体类的id名称;column是表字段名称 property标签:name是实体类的属性名称;column是表字段名称 --> <id name="uid"> <generator class="native"/> </id> <property name="username" column="username"/> <property name="password" column="username"/> </class> </hibernate-mapping>

    四、创建Hibernate的核心配置文件

    Hibernate的核心配置文件的名称和位置必须固定。名称必须为hibernate.cfg.xml,必须放在src文件下

    引入约束

    (1)配置数据库连接信息:数据库驱动类型,和数据库的连接信息等

    <!-- 1.数据库连接信息 --> <property name="dialect"> org.hibernate.dialect.MySQL5InnoDBDialect </property> <property name="connection.url"> jdbc:mysql:///itcastoa0720 </property> <property name="connection.driver_class"> com.jdbc.mysql.Driver </property> <property name="connection.username">root</property> <property name="connection.password">123456</property>

    (2)配置Hibernate的一些可选信息。

    <!--在控制台输出执行的sql语句--> <property name="show_sql">true</property> <!--配置自动生成数据库表--> <property name="hbm2ddl.auto">update</property>

    (3)加载.hbm.xml映射文件。因为Hibernate执行过程之后,只会默认加载Hibernate的核心配置文件。

    <!-- 3.声明导入映射文件 --> <mapping resource="cn/itcast/oa/domain/Role.hbm.xml" /> 这样。Hibernate的搭建环境就完成了。

    (三)测试

    下面我们写一个单元测试方法测试一下。

    值得一提的是:数据库表自动创建是在sessionFactory创建时发生的。

    接下来我们会进行三大框架整合。事务管理和sessionFactory的创建都会交给spring来完成。这样就大大减少了我们的代码量,也会提高我们的效率。

    转载请注明原文地址: https://ju.6miu.com/read-38865.html

    最新回复(0)