国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Hibernate根據(jù)實體類自動生成表的方法

這篇具有很好參考價值的文章主要介紹了Hibernate根據(jù)實體類自動生成表的方法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

第一種方法

這種方法需要配置 hibernate.cfg.xml 的屬性 hibernate.hbm2ddl.auto,該屬性值的具體說明如下:

說明
update 實體對應的表如果不存在則會創(chuàng)建。如果實體中新增加了字段,會在相應的表中增加一列
create 每次啟動 Hibernate 都會創(chuàng)建表。在 Hiberante 啟動時,會先刪除實體對應的表,然后再創(chuàng)建實體對應的表
create-drop 每次啟動 Hibernate 都會創(chuàng)建表,并執(zhí)行完后刪除表。在 Hibernate 啟動時,先刪除實體對應的表,然后創(chuàng)建實體對應的數(shù)據(jù)表。SessionFactory執(zhí)行close()時刪除表。
validate 檢查hbm的文件,如果和數(shù)據(jù)庫的字段不一致會拋異常
create-only 在Hibernate啟動時,對實體僅會執(zhí)行建表語句,即使實體對應的表已經存在了,也會重復執(zhí)行建表語句
drop 在Hiberante啟動時,對實體對應的表執(zhí)行刪除語句,即使實體不存在對應的表,都會執(zhí)行表刪除語句
none 在Hiberante啟動時,不會執(zhí)行任何操作

第一步:先寫好實體類 Ticket

package priv.lwx.hibernate.basic.entity;

import java.io.ByteArrayInputStream;

/**
 * description
 *
 * @author liaowenxiong
 * @date 2022/11/26 19:31
 */

public class Ticket {
  private Integer id;
  private Integer number;
  private Byte version;

  public Integer getId() {
    return id;
  }

  public void setId(Integer id) {
    this.id = id;
  }

  public Integer getNumber() {
    return number;
  }

  public void setNumber(Integer number) {
    this.number = number;
  }

  public Byte getVersion() {
    return version;
  }

  public void setVersion(Byte version) {
    this.version = version;
  }
}

第二步:寫好映射配置文件 Ticket.hbm.xml

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="priv.lwx.hibernate.basic.entity">
    <class name="Ticket" table="ticket" schema="test">
        <id name="id" type="integer">
            <column name="id" unique="true"/>
            <!--主鍵值的生成方式-->
            <generator class="native"/>
        </id>
        <property name="number" type="integer">
            <column name="number" not-null="true"/>
        </property>
        <property name="version" type="byte">
            <column name="version" not-null="true"/>
        </property>
    </class>
</hibernate-mapping>

第三步:配置 hibernate.cfg.xml
配置屬性 hibernate.hbm2ddl.auto

<property name="hibernate.hbm2ddl.auto">update</property>

引入映射配置文件:

<mapping resource="priv/lwx/hibernate/basic/entity/Ticket.hbm.xml"/>

第四步:執(zhí)行Hibernate的查詢代碼

public class TicketTest {
  @Test
  public void testSaveTicket() {
    Session session = HibernateUtils.getSession();
    Transaction tx = session.beginTransaction();
    Ticket ticket = new Ticket();
    ticket.setNumber(100);
    ticket.setVersion((byte) 1);
    session.save(ticket);
    HibernateUtils.closeSession();
  }
}

執(zhí)行上述的 session.save(ticket);,會去解析 hibernate.cfg.xml 和 Ticket.hbm.xml,解析到屬性 hibernate.hbm2ddl.auto 的值為 update,就會去獲取數(shù)據(jù)表的結構,如果獲取不到則會生成建表語句,如果獲取到了,則會逐個字段與映射文件進行比對,如果發(fā)現(xiàn)數(shù)據(jù)表字段缺少、字段名不同、數(shù)據(jù)類型不同等情況,則會生成相應的DDL語句對數(shù)據(jù)表的結構進行更新。如果數(shù)據(jù)表的字段比映射文件中的字段多,并不會把數(shù)據(jù)表中多出的字段刪除掉。DDL語句生成好之后,save() 方法會根據(jù)傳入的實體對象的屬性、hbm 文件生成 DML 語句,再結合JDBC的API訪問數(shù)據(jù)庫,完成數(shù)據(jù)表結構的更新以及數(shù)據(jù)的存儲。

第二種方法

 public void testAutoCreateTable() {
    ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().configure().build();
    Metadata metadata = new MetadataSources(serviceRegistry).buildMetadata();
    //工具類
    SchemaExport export = new SchemaExport();
    // 會根據(jù)hbm文件將實體類對應的數(shù)據(jù)表全部刪除再創(chuàng)建表
    export.create(EnumSet.of(TargetType.STDOUT), metadata);
  }
}

參考

1.https://blog.csdn.net/linbiubiubiu/article/details/80314361
2.https://blog.csdn.net/qq_36332184/article/details/102701275
3.https://blog.51cto.com/u_2870645/2864781文章來源地址http://www.zghlxwxcb.cn/news/detail-423261.html

到了這里,關于Hibernate根據(jù)實體類自動生成表的方法的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Springboot mybatis generate 自動生成實體類和Mapper

    Springboot mybatis generate 自動生成實體類和Mapper

    運行MyBatisGeneratorApp類即可實現(xiàn)自動生成實體類、mapper接口、mapper.xml 1、pom文件引入依賴 2、自定義 lombok 插件類 LombokPlugin.java 3、添加 generatorConfig.xml 配置文件 4、Generator 啟動類 MyBatisGeneratorApp.java

    2024年02月09日
    瀏覽(27)
  • 源生成器:根據(jù)需要自動生成機械重復代碼

    本文概述了利用.NET Compiler Platform(“Roslyn”)SDK 附帶的 源生成器 (Source Generator)自動生成機械重復的代碼。關于這部分的基礎入門知識可以在MSDN [1] 學到。 本文 默認 已經有一個解決方案,包含兩個項目。一個是普通C#項目,依賴于另一個源生成器項目。 此處以 Dependenc

    2024年02月01日
    瀏覽(94)
  • AICG,人工智能自動生成內容——根據(jù)文本生成圖像,視頻,音頻

    AICG,人工智能自動生成內容——根據(jù)文本生成圖像,視頻,音頻

    1、什么是AICG? 什么是AICG? AICG是指人工智能自動生成內容。 通過算法模型,將文本轉化為圖像、音頻、視頻等多種形式。 在數(shù)字時代,AICG已經成為各種領域中不可或缺的一部分。 AICG的應用場景 AICG在數(shù)字營銷、廣告制作、電影制作等領域廣泛應用。 可以用于教育、娛樂

    2024年02月14日
    瀏覽(28)
  • GO項目自動化-根據(jù)庫表字段自動生成API

    一個項目開發(fā)離不開數(shù)據(jù)庫的增刪改查,API功能也基本圍繞著表的CRUD:增加(Create)、讀取(Read)、更新(Update)和刪除(Delete)。每個表寫一個CRUD,方法都差不多,邏輯也非常相似。 那么有沒有可能根據(jù)表結構直接自動化生成各個表的CRUD呢? 當然可以,前幾篇文章已經介紹了gola

    2024年01月15日
    瀏覽(17)
  • idea2023根據(jù)表自動生成+springboot跑起來

    idea2023根據(jù)表自動生成+springboot跑起來

    idea安裝插件 idea中顯示數(shù)據(jù)庫連接 就可以看到如下界面 選中你想生成的表,右鍵如下操作 如上就有了所有需要的后端代碼 生成后,要查看一下mapper.xml中的文件是否 正確, 若有誤請先去修改,例如我的版本下生成了xml文件中缺乏逗號 4. 如上寫好后想跑起來,配置pom,xml 配置

    2024年02月07日
    瀏覽(21)
  • 前端之vue 根據(jù)菜單自動生成路由(動態(tài)配置前端路由)

    前端之vue 根據(jù)菜單自動生成路由(動態(tài)配置前端路由)

    在需要權限控制的頁面,往往存在根據(jù)用戶來顯示菜單的情況,單獨根據(jù)用戶類型判斷顯然不是很好,如果后面用戶類型發(fā)生變化,項目修改維護可能就會比較麻煩,所以比較好的做法是根據(jù)后端返回的菜單動態(tài)生成頁面路由,以達到完全權限控制的目的,并且若權限發(fā)生變

    2024年04月10日
    瀏覽(28)
  • java請求SAP系統(tǒng),發(fā)起soap的xml報文,實體類轉換,idea自動生成教程

    java請求SAP系統(tǒng),發(fā)起soap的xml報文,實體類轉換,idea自動生成教程

    1、將接口的網(wǎng)頁地址,右鍵保存,然后修改文件后綴為wsdl文件 2、idea全局搜索 wsdl,找到自動轉換javabean插件: 3、點擊后,選擇下載改完后綴的文件(選擇): ? ? ?4、將無用的class文件刪除掉 5、請求sap的地址為:最下邊有兩個地址,http和https的,請求地址為http的,后綴改一

    2024年02月12日
    瀏覽(23)
  • 【效率提升-Perl腳本】根據(jù)Verilog文件自動生成tb文件

    【效率提升-Perl腳本】根據(jù)Verilog文件自動生成tb文件

    在數(shù)字IC設計過程中,根據(jù)頂層生成testbench時存在很多重復性工作,因此為了提高工作效率,特地開發(fā)此腳本。 相應的python腳本見鏈接: 【效率提升—Python腳本】根據(jù)Verilog文件自動生成tb文件 學習更多IC知識,請關注

    2024年02月13日
    瀏覽(21)
  • .net 連接MySql數(shù)據(jù)庫 + 使用Microsoft.EntityFrameworkCore.Design自動生成實體類 + 使用EFCore操作數(shù)據(jù)庫

    .net 連接MySql數(shù)據(jù)庫 + 使用Microsoft.EntityFrameworkCore.Design自動生成實體類 + 使用EFCore操作數(shù)據(jù)庫

    先準備好一個mysql數(shù)據(jù)庫(我這里準備的是test數(shù)據(jù)庫,里面又準備了兩張表,其中book表中只有兩個字段,Id(bigint類型)和 Name(varchar類型)) 使用VS新建一個asp.net core web api項目(我這里使用的框架是.net5.0的,確保版本對應很重要) 打開終端 進到項目所在目錄(我這里解

    2024年02月07日
    瀏覽(32)
  • 【編譯原理】 實驗三 LL(1)分析法(LL1分析表的自動生成)

    【編譯原理】 實驗三 LL(1)分析法(LL1分析表的自動生成)

    由于代碼較長,csdn對文章總長度有字數(shù)限制,想只看完整代碼的請移步另一篇博客。 https://blog.csdn.net/qq_46640863/article/details/125705891 理論與習題講解移步視頻 https://www.bilibili.com/video/BV1zu4y1C7SL 1.實現(xiàn)LL(1)分析算法 2.輸入:教材中的算術表達式文法;待分析的語句(如i+i*i) 3.輸

    2024年02月06日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包