如何使用hibernate创建数据表

引言:使用连接数据库来创建实体类,很快就学会了,但是对于怎么用hibernate创建数据表确实用了两天的时间,记录下这次学习的过程。

1、在一开始怎么都搜不到资料,后来才明白,在搜的时候要加正向的,用数据库创建实体类是反向,用实体类创建数据表是正向的,这样搜就可以了

2、在一开始的时候,总是执着于IDE和插件的问题,对于所遇到的问题没有进行深入的研究,导致浪费掉了大量的时间(最后还是没搞定)

3、总是执着于教程上的操作方式,到最后才发现,在新版本里的写法是不一样的,坑之又坑

4、浪费时间最长的是如何使用hibernate用实体类生成hbm.xml文件,在教程里看老师用的挺溜的,因为电脑的原因,ide、插件安装失败,所以最后是只能是手写了

1、创建hibernate项目:参考资料:https://blog.csdn.net/fighting_sxw/article/details/80566295(友情提示:注意测试时新版本与旧版本的书写方式)

2、在使用hibernate创建数据表需要四个主要文件:实体类,实体类对应的映射文件(后缀名为hbm.xml结尾),hibernate的配置文件(以cfg.xml结尾),以及测试类

3、对应的主要内容如下:

实体类:

package com.hibernate.entity;

import java.util.Date;

public class Students {

    private int sid;
    private String sname;
    private String gender;
    private Date birthday;
    private String address;

    public Students(){

    }

    public Students(int sid, String sname, String gender, Date birthday, String address) {
        this.sid = sid;
        this.sname = sname;
        this.gender = gender;
        this.birthday = birthday;
        this.address = address;
    }

    public int getSid() {
        return sid;
    }

    public void setSid(int sid) {
        this.sid = sid;
    }

    public String getSname() {
        return sname;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "Students{" +
                "sid=" + sid +
                ", sname=‘" + sname + ‘\‘‘ +
                ", gender=‘" + gender + ‘\‘‘ +
                ", birthday=" + birthday +
                ", address=‘" + address + ‘\‘‘ +
                ‘}‘;
    }
}

实体类对应的hbm.xml文件

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="com.hibernate.entity.Students" table="Students">
        <id name="sid" type="int">
            <column name="SID"/>
            <generator class="assigned"/>
        </id>
        <property name="sname" type="java.lang.String">
            <column name="SNAME"/>
        </property>
        <property name="gender" type="java.lang.String">
            <column name="GENDER"/>
        </property>
        <property name="birthday" type="java.util.Date">
            <column name="BIRTHDAY"/>
        </property>
        <property name="address" type="java.lang.String">
            <column name="ADDRESS"/>
        </property>

    </class>

</hibernate-mapping>

hibernate的cfg文件

<?xml version=‘1.0‘ encoding=‘utf-8‘?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="connection.url">jdbc:mysql://localhost:3306/rushi</property>
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="connection.username">root</property>
    <property name="connection.password">Sys935269</property>

    <!-- DB schema will be updated if needed -->
    <!-- <property name="hbm2ddl.auto">update</property> -->
    <property name="show_sql">true</property>
    <property name="format_sql">true</property>
    <!--自动生成-->
    <property name="hbm2ddl.auto">create</property>
    <!--数据库方言-->
    <property name="hibernate.dialect">org.hibernate.dialect.MySQL55Dialect</property>

    <!--加载资源-->
    <mapping resource="com/hibernate/entity/Students.hbm.xml"/>

  </session-factory>
</hibernate-configuration>

4、这里对测试类重点介绍下,测试的时候新版本与旧版本可能会有所不同,按照教程可能永远都找不出问题所在(参考资料:https://blog.csdn.net/bingjianit/article/details/68954250

package com.hibernate.entity;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.Metadata;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.junit.After;
import org.junit.Before;

import java.util.Date;

public class Test {

    private SessionFactory sessionFactory;
    private Session session;
    private Transaction transaction;

    @Before
    public void init() {

        //创建配置对象
        //Configuration configure = new Configuration().configure();

        //创建服务注册对象
        //ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();

        ////以上为旧版本的写法,若是不注意,就会报org.hibernate.MappingException: Unknown entity: com.hibernate.entity.Student这个错误

        StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().configure().build();
        //创建会话工厂对象
        SessionFactory sessionFactory = new MetadataSources(serviceRegistry).buildMetadata().buildSessionFactory();
        //会话对象
        session = sessionFactory.openSession();
        //开启事务
        transaction = session.beginTransaction();
    }

    @After
    public void destory() {
        //提交事务
        transaction.commit();
        //关闭会话
        session.close();
        //关闭会话工厂
        sessionFactory.close();
    }

    @org.junit.Test
    public void TestSaveStudents() {
        //生成学生对象
        Students s = new Students(2, "张三丰", "南", new Date(), "武当山");
        session.save(s);
    }
}

程序运行结束,可能提示运行失败,但是数据已经存在表格里了,不确定的可以去数据里查看下

格言:从不熟悉到熟悉是一个过程,无需恐惧,

原文地址:https://www.cnblogs.com/lindaiyu/p/10990525.html

时间: 2024-11-05 12:28:33

如何使用hibernate创建数据表的相关文章

SpringBoot+Mybatis 自动创建数据表(适用mysql)

Mybatis用了快两年了,在我手上的发展史大概是这样的 第一个阶段 利用Mybatis-Generator自动生成实体类.DAO接口和Mapping映射文件.那时候觉得这个特别好用,大概的过程是这样的 在数据库中先建好表配置好几个xml文件(一般都是复制粘贴上一个项目的),然后根据数据库中的表,生成实体类.DAO接口和Mapping映射文件当需要添加数据操作的时候,先在xml中写好CRUD语句,然后在DAO接口层写接口,最后到映射文件渐渐地,我忽然发现,这种方式越来越烦.改一个字段,要修改很多

oracle的学习 第二节:创建数据表

学习内容: A.创建数据库和表空间 B.创建用户和分配权限 C.创建数据表 一.创建数据库和表空间 (一)SQL语言的基本概念 1.概念 高级的结构化查询语言:沟通数据库服务器和客户的重要桥梁. PL/sql语言是结构化的查询语言. 2.分类: 数据定义语言  :create  alter  drop 数据操作语言: insert update delete 数据控制语言:select (二)创建数据库的两种方式 方式一:图形界面: 方式二:create  Datebase命令方法.(常用) 具

创建数据表

创建数据表的语法规则如下: CREATE TABLE <表名> ( 字段名1, 数据类型, [约束条件], 字段名2, 数据类型, [约束条件], ... ); [例子]创建员工表 tb_emp1,结构如下 字段名称 数据类型 备注 id INT(11) 员工编号 name VARCHAR(25) 员工名称 deptId INT(11) 部门编号 salary FLOAT 员工薪资 mysql> CREATE DATABASE test_db; # 需要先创建数据库 mysql>

yii框架之gii创建数据表对应的model类

一.首先是在数据库中建立工程需要的表: 二.然后,配置对应文件: 在工程目录下yiiProject\protected\config\main.php.在50行定义了db应用组件,下面后一段注释掉了的mysql的链接配置项,我们将未注释的db注释掉,然后打开mysql链接代码并填写相关信息即可完成mysql链接配置项. 即,把下面代码         'db'=>array(             'connectionString' => 'sqlite:'.dirname(__FILE_

第7讲++创建数据表和约束

二.创建数据表 1.创建简单的数据表 --命令格式 --create table 表名 -- (列定义 列约束 [,--n]) --实例1:在xscj库中,创建一个简单的表xsqk. create table xscj.dbo. xsqk (学号 char (10), 姓名 varchar (10), 性别 bit , 联系电话 char(11) ) 实例2:在xscj库中,创建"序号"标识属性."学号"非空属性,"性别"有默认值1的表xsqk.

如何创建数据表

一.什么是数据表? 数据表(或称表)是数据库最重要的组成部分之一,是其他对象的基础. 行成为记录,列成为字段.如果涉及数据,必须要在数据库里创建数据表. 二.如何创建MYSQL数据表? 1.在创建数据表之前,我们需要先打开数据库.我们使用"USE 数据库名称"命令来打开.验证用户打开的是哪个数据库,我们可以使用命令"SELECT DATABASE()". 比如: mysql> use test; 打开数据库Database changedmysql> s

关于度量快速开发平台(创建数据表,业务表)

转眼之间,我已在度量工作了20天,在这20天中,不多不少,有些收获. 前十天,在无尽的学习当中,熟悉快速开放平台,看文档,听同事讲解之后,做练习,十天下来, 对于这个平台已熟悉的差不多了,我不得不说这个平台的强大.一.平台简介 快速开发平台主要分为两种模式.一种是引擎模式,一种是生成源代码模式.在度量快速开发平台中,这两种模式都使用到了,但是生成源代码模式在度量快速开发平台里面得到了不一样的体现,更大幅度的提高了效率. 我们在平台中不管用什么方式构建(在平台中开发我们称之为构建)出来的应用(在平

SAE中创建数据表

Step1:进入新浪云应用数据库 点击应用名称,进入到该应用管理界面 在数据库服务中点击"共享型MySQL" 在接下来的页面中点击"管理MySQL" 此时会让你输入安全密码,当你输入安全密码之后会跳转到数据库界面 上图为我已经创建过的数据表 Step2:创建数据表 数据表(带有3个字段,id为主键,且为自动增长) 填写数据表名和字段数 (记得点击"执行") 接下来弹出的界面 填写字段信息 填写完信息记得点击"执行"和"

mysql之创建数据库,创建数据表

写在前面 项目中用到mysql数据库,之前也没用过mysql,今天就学下mysql的常用的语法,发现跟sql server的语法极其相似.用起来还是蛮简单的. 一个例子 1.创建一个名为School的数据库. 1.创建一个学生信息表:学生id(自增,主键),姓名,年龄,性别,电话,籍贯,入学时间,所属班级id(外键). 2.创建一个学生成绩表:成绩id(自增,主键),科目,成绩,学生id(外键),创建时间. 3.创建一个学生班级表:班级id(主键,自增),班级名称. 创建表和数据库 #如果存在数