菜鸟学SSH(十一)——Hibernate之SchemaExport+配置文件生成表结构

菜鸟学SSH(十一)——Hibernate之SchemaExport+配置文件生成表结构

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

今天说点基础的东西,说说怎样通过SchemaExport跟Hibernate的配置文件生成表结构。事实上方法很easy,仅仅须要两个配置文件,两个Java类就能够完毕。


首先要生成表,得先有实体类,以Person.java为例:

/**
 * 
 * @author Administrator
 * @hibernate.class table="T_Person"
 */
public class Person {
	
	/**
	 * @hibernate.id
	 * generator-class="native"
	 */
	private int id;
	
	/**
	 * @hibernate.property
	 */
	private String name;
	
	/**
	 * @hibernate.property
	 */
	private String sex;
	
	/**
	 * @hibernate.property
	 */
	private String address;
	
	/**
	 * @hibernate.property
	 */
	private String duty;
	
	/**
	 * @hibernate.property
	 */
	private String phone;
	
	/**
	 * @hibernate.property
	 */
	private String description;
	
	/**
	 * @hibernate.many-to-one
	 */
	private Orgnization org;
	
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public String getDescription() {
		return description;
	}
	public void setDescription(String description) {
		this.description = description;
	}
	public String getDuty() {
		return duty;
	}
	public void setDuty(String duty) {
		this.duty = duty;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public Orgnization getOrg() {
		return org;
	}
	public void setOrg(Orgnization org) {
		this.org = org;
	}
}


接下来就是Person类相应的配置文件Person.hbm.xml,配置例如以下:

<hibernate-mapping>
  <class table="T_Person" name="com.tgb.model.Person">
    <id name="id">
      <generator class="native"/>
    </id>
    <property name="name"/>
    <property name="sex"/>
    <property name="address"/>
    <property name="duty"/>
    <property name="phone"/>
    <property name="description"/>
    <many-to-one name="org"></many-to-one>
  </class>
</hibernate-mapping>


还有包括Person.hbm.xml相关信息的Hibernate默认配置文件,hibernate.cfg.xml:

<hibernate-configuration>
  <session-factory>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1/test</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">123456</property>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.show_sql">true</property>
    <property name="hibernate.hbm2ddl.auto">update</property>
    <property name="hibernate.current_session_context_class">thread</property>
    <mapping resource="com/tgb/model/Person.hbm.xml"/>
  </session-factory>
</hibernate-configuration>


万事俱备仅仅欠东风,最后我们还须要一个依据上述内容生成数据表的小工具,即ExportDB.Java:

import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

public class ExportDB {
	  
    /** 
     * @param args 
     */  
    public static void main(String[] args) {  
          
        // 默认读取hibernate.cfg.xml文件  
        Configuration cfg = new Configuration().configure();  
          
        // 生成并输出sql到文件(当前文件夹)和数据库  
        SchemaExport export = new SchemaExport(cfg);  
          
        // 创建表结构,第一个true 表示在控制台打印sql语句,第二个true 表示导入sql语句到数据库
        export.create(true, true);  
    }  
}

完毕以上步骤以后,仅仅须要运行ExportDB类就可以,当然前提是已经在mysql中创建了相应的数据库,我们这里创建了一个名为test的測试数据库。运行成功之后我们就能够看到数据库里已经有了我们的t_person表了,例如以下图所看到的:

菜鸟学SSH(十一)——Hibernate之SchemaExport+配置文件生成表结构


OK,你会了吗,就是这么简单,假设之前没弄过,就来试试吧!


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118353.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 理解group by[通俗易懂]

    理解group by[通俗易懂]先来看下表1,表名为test: 表1  执行如下SQL语句: 1 2 SELECT name FROM test GROUP BY name   你应该很容易知道运行的结果,没错,就是下表2: 表2  可是为了能够更好的理解“groupby”多个列“和”聚合函数“的应用,我建议在思考的过程中,由表1到表2的过程中…

    2022年5月26日
    29
  • blender模型(sklearn模型融合)

    前言机器学习中很多训练模型通过融合方式都有可能使得准确率等评估指标有所提高,这一块有很多问题想学习,于是写篇博客来介绍,主要想解决:什么是融合?几种方式融合基本的模型融合组合及适用场景、优缺点等什么是融合?构建并结合多个学习器来完成学习任务,我们把它称为模型融合或者集成学习。不同的模型有各自的长处,具有差异性,而模型融合可以使得发挥出各个模型的优势,让这些相对较弱的模型(学习器)通…

    2022年4月16日
    121
  • vue路由懒加载的实现方式_vue路由懒加载实现原理

    vue路由懒加载的实现方式_vue路由懒加载实现原理1、当一个vue项目很大的时候,对于一些“暂时”用不到的组件,我们可以不进行加载,等到用到次组件时再加载。这样可以优化spa应用首次加载白屏情况,也给用户更好的体验。这样就是vue路由懒加载。2、常用的懒加载方式有两种:即使用ES中的import和vue异步组件2.1未使用懒加载importHelloWorldfrom’@/components/HelloWorld…

    2022年10月6日
    0
  • 苹果x充电慢是什么原因_手机资讯:为什么 iPhone 充电从 99% 到 100% 时特别慢是电池故障吗…

    如今使用IT数码设备的小伙伴们是越来越多了,那么IT数码设备当中是有很多知识的,这些知识很多小伙伴一般都是不知道的,就好比最近就有很多小伙伴们想要知道为什么iPhone充电从99%到100%时特别慢是电池故障吗,那么既然现在大家对于为什么iPhone充电从99%到100%时特别慢是电池故障吗都感兴趣,小编就来给大家分享下关于为什么iPhone充电从99%到100%…

    2022年4月7日
    260
  • centos dhcp服务器配置_dhcp server什么意思

    centos dhcp服务器配置_dhcp server什么意思如何让linuxdhcpserver同时支持option60和option82认证(2012-06-0703:26:06)标签:linux认证serveroption如何杂谈如何让linuxdhcpserver同时支持option60和option82认证ddns-update-styleinterim;ignoreclient-updates;#DVNDHCP#class…

    2022年10月9日
    0
  • Android开发之startActivityForResult过时的替代方案

    Android开发之startActivityForResult过时的替代方案如上图所示:在api29中提示已过时,官方给出的替代方案是上面第二个红框的方法registerForActivityResult该怎么用呢?先看kotlin版本的写法:privatevalstartActivity=registerForActivityResult(ActivityResultContracts.StartActivityForResult()){//此处是跳转的result回调方法if..

    2022年7月11日
    21

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号