SSH进阶(一)Hibernate--正向生成表

本文详细介绍使用Hibernate框架从实体类生成数据库表的过程,包括核心配置文件、实体类及映射文件的编写,以及如何通过面向对象的方式操作关系型数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hibernate

                     -----------正向生成表

Hibernate它相较于mybatis来说,是一种全自动的ORM框架

再者就是在Hibernate当中几乎看不见射门sql语句,而mybatis底层是由sql语句的;

Hibernate将jdbc进行了封装,它具有数据库的兼容性;

在herbernate当中,我们需要明确三点:

表和类的关联; 对象标注记录的关联; 类的属性和表当中字段的关联;

而且是由hibrenate是表是一定要有主键的,用来唯一标识;

即用面向对象的方式来创建数据库;

 

在这个专题当中我们会介绍的内容有:

由hibernate的文件生成数据库当中的表;

由数据库生成所需要的文件,如pojo等,也叫做逆向工程;

HQL语言;

Hibernate获取session的方式;

Hibernate当中多表之间的关联方式,解决方式;

Hibernate的检索方式;

Pojo的状态,以及session的缓存,快照机制;

 

接下来我们就来用hibernate当中的文件来生成具体的数据库表;

 

首先我们需要编写的文件有三个:

 

核心配置文件,要生成的表对于的实体类,以及将该实体类转化为具体表的文件

  当然如果你想要生成多张表,那么你就应该编写多个实体类以及它对应的映射文件;

首先第一个就是实体类:

1.这里我们一javauser为例具体看下面代码:

我们在这里写的每一个属性对应的就是数据库表当中的字段,而这个类名就是数据库的表名

2.第二个就是我们将该实体类转化为具体的表的配置文件:

这是一个头部的声明,标明了hibernate-mapping这是类对应配置文件的标志

<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping >
    <!--
   
解决的问题就是有
    a.class中的name解决的是类与表的对应
    当中的id解决的是对象和行的关联 还需要指定主键的自动生成方式
    b.最后就是解决属性与数据库中字段的对应

    实际就是用面向对象的思想来操作关系型数据库
    -->
   
<class name="com.ww.pojo.JavaUser" table="JavaUser">
        <id name="id" column="id">
            <!-- 指定主键生成的方式 不同的数据库可能会有不同-->
           
<generator class="identity"></generator>
        </id>
        <property name="name" column="name"></property>
        <property name="password" column="password"></property>
    </class>
</hibernate-mapping>

 

3.核心配至文件


 
同样它也是有头部得hibernate-configuration代表得就是这是hibernate得核心配置文件
<!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="connection.url">jdbc:mysql://localhost:3306/user?characterEncoding=utf-8</property>

        <property name="connection.username">root</property>

        <property name="connection.password">root2</property>



       <!--\\指定方言,不同得数据库有不同得方言-->

        <property name="hibernate.dialect">org.hibernate.dialect.MySQL55Dialect</property>

        <!--自动生成-->

        <property name="hbm2ddl.auto">update</property>
后面得可以编写,小编只是为了让创建表得sql语句在控制台打出来,并将其格式化,从而方便查看

        <!--显示Sql-->

        <property name="hibernate.show_sql">true</property>

        <!--格式化-->

        <property name="hibernate.format_sql">true</property>

     

           </session-factory>

</hibernate-configuration>

 

之后若是要开是开发,要做得就是将类对应得配置文件在核心配置文件当中注册

这样才能通过类去操做数据库

 

<mapping resource="com/qf/pojo/JavaUser.hbm.xml"></mapping>

 

4.生成

之后我们就需要去加载配置文件去生成对应得表;

也就是初始化操作:

编写主方法我i调用这样方法就可生成,当然这只是单个框架得做法,在后面整合时候就不需要这样做了;

 

之后就可以编写具体得方法去给你新建得表当中去添加数据了;

以上就是正向生成,下篇将会对逆向工程进行介绍;

 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.youkuaiyun.com/qq_42112846

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值