hibernate工作原理及流程

来源:互联网 发布:汕头宝美工培训费用 编辑:程序博客网 时间:2024/06/05 11:00

使用hibernate开发了几次小项目,但仍感觉对其理解的不是很到位,在这里写篇博客加深理解。

同学习struts一样,我个人认为要想熟练掌握一个框架,必先理解其原理。如果只是会用而不知其所以然,这跟照葫芦画瓢没什么区别。而且后续深入也会很吃力。

在了解原理前,先来了解下hibernate是一款什么框架,即这款框架存在的意义是什么。hibernate是一款将应用和数据库连接起来的框架,封装了许多对数据库操作的方法,作为java web开发者,可以将其视为升级版的jdbc。下面来看(自画渣图)

                                                     

从图中可以清晰地看出hibernate在应用中的位置,其主要配置文件有两个,一个是与java bean对象对应的.hbm.xml文件和包含全局映射的hibernate.cfg.xml文件。

其中.hbm.xml文件的数量与bean对象一致,即有多每一个bean对象都对应一个.hbm.xml文件,其作用是将数据库中的实例记录与Bean属性对应起来,包括数据类型,名称等,

如:一个名为Product的java bean.其属性有id, name, price。主键为id,其在数据库中对应的表名为product

<hibernate-mapping package="com.bean">    <class name="Product" table="product">        <id name="id" column="id">            <generator class="native">            </generator>        </id>        <property name="name" column="name"/>        <property name="price" column="price" />    </class>     </hibernate-mapping>

这样hibernate才能操作正确的对象。而hibernate.cfg.xml除了负责配置数据库连接等属性,还负责配置.hbm.xml的映射

<hibernate-configuration>     <session-factory>        <!-- Database connection settings -->        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>        <property name="connection.url">jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8</property>        <property name="connection.username">root</property>        <property name="connection.password">123</property>        <!-- SQL dialect -->        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>        <property name="current_session_context_class">thread</property>        <property name="show_sql">true</property>
       <!--是否更新数据库,配置update hibernate会自动帮我们创建数据表-->
        <property name="hbm2ddl.auto">update</property>        <mapping resource="com/bean/Product.hbm.xml" />        <mapping resource="com/bean/Category.hbm.xml" />        <mapping resource="com/bean/User.hbm.xml" />    </session-factory> </hibernate-configuration>
如图配置了Product,Category和User bean对象与数据库的关系映射