hibernate工作原理及流程

使用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对象与数据库的关系映射


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值