在 IDEA 中支持 Hibernate 生成實體類操作指南

来源:http://www.cnblogs.com/java-class/archive/2016/12/21/6208356.html
-Advertisement-
Play Games

談起 Hibernate 應該得知道 Gavin King 大叔,他構建了 Hibernate ,並將其捐獻給了開源社區。 Hibernate 對象關係映射解決方案,為面向對象的領域模型到傳統的關係型資料庫的映射,提供了一個使用方便的框架。 Hibernate 的設計目標是將軟體開發人員從大量相同的 ...


    談起 Hibernate 應該得知道 Gavin King 大叔,他構建了 Hibernate ,並將其捐獻給了開源社區。

    

   Hibernate 對象關係映射解決方案,為面向對象的領域模型到傳統的關係型資料庫的映射,提供了一個使用方便的框架。

   Hibernate 的設計目標是將軟體開發人員從大量相同的數據持久層相關編程工作中解放出來。

   Hibernate 也是目前Java開發中最為火熱的資料庫持久層框架,現已歸JBOSS所有。

   好了言歸正傳,IDEA 對開發者真的是貼心的小棉襖,本篇博客記錄下 IDEA 中連接資料庫反轉生成 Hibernate 實體和配置文件。

1. 打開 DataBase 視窗,添加數據源

   OK,數據源已添加好。

2. 添加 hibernat 持久層支持,生成實體 Bean /配置文件

 

   然後選擇數據源,選擇包,添加生成 Bean 的尾碼,選擇表,選擇生成 xml 配置文件還是註解。

   OK,結束,是不是比 Eclipse/MyEclipse 上面安裝各種插件效率要高的多。

   如果你選擇生成帶 JPA 註解類,映射文件是可以省略的,相反如果你生成映射文件,JPA 註解也可以省略。

   看你喜歡哪種方式,有機會說說 JPA 註解類和映射文件在項目實戰中的優劣。

   生成的JPA 註解類:

@Entity
@Table(name = "user", schema = "db_test", catalog = "")
public class UserPO {
    private String uuid;
    private String name;
    private String passwd;
    private String sex;
    private Timestamp birthday;
    private String phone;
    private String photo;
    private String email;
    private String yxbz;
    private String sorts;

    @Id
    @Column(name = "UUID")
    public String getUuid() {
        return uuid;
    }

    public void setUuid(String uuid) {
        this.uuid = uuid;
    }

    @Basic
    @Column(name = "NAME")
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Basic
    @Column(name = "PASSWD")
    public String getPasswd() {
        return passwd;
    }

    public void setPasswd(String passwd) {
        this.passwd = passwd;
    }

    @Basic
    @Column(name = "SEX")
    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    @Basic
    @Column(name = "BIRTHDAY")
    public Timestamp getBirthday() {
        return birthday;
    }

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

    @Basic
    @Column(name = "PHONE")
    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    @Basic
    @Column(name = "PHOTO")
    public String getPhoto() {
        return photo;
    }

    public void setPhoto(String photo) {
        this.photo = photo;
    }

    @Basic
    @Column(name = "EMAIL")
    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Basic
    @Column(name = "YXBZ")
    public String getYxbz() {
        return yxbz;
    }

    public void setYxbz(String yxbz) {
        this.yxbz = yxbz;
    }

    @Basic
    @Column(name = "SORTS")
    public String getSorts() {
        return sorts;
    }

    public void setSorts(String sorts) {
        this.sorts = sorts;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        UserPO userPO = (UserPO) o;

        if (uuid != null ? !uuid.equals(userPO.uuid) : userPO.uuid != null) return false;
        if (name != null ? !name.equals(userPO.name) : userPO.name != null) return false;
        if (passwd != null ? !passwd.equals(userPO.passwd) : userPO.passwd != null) return false;
        if (sex != null ? !sex.equals(userPO.sex) : userPO.sex != null) return false;
        if (birthday != null ? !birthday.equals(userPO.birthday) : userPO.birthday != null) return false;
        if (phone != null ? !phone.equals(userPO.phone) : userPO.phone != null) return false;
        if (photo != null ? !photo.equals(userPO.photo) : userPO.photo != null) return false;
        if (email != null ? !email.equals(userPO.email) : userPO.email != null) return false;
        if (yxbz != null ? !yxbz.equals(userPO.yxbz) : userPO.yxbz != null) return false;
        if (sorts != null ? !sorts.equals(userPO.sorts) : userPO.sorts != null) return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result = uuid != null ? uuid.hashCode() : 0;
        result = 31 * result + (name != null ? name.hashCode() : 0);
        result = 31 * result + (passwd != null ? passwd.hashCode() : 0);
        result = 31 * result + (sex != null ? sex.hashCode() : 0);
        result = 31 * result + (birthday != null ? birthday.hashCode() : 0);
        result = 31 * result + (phone != null ? phone.hashCode() : 0);
        result = 31 * result + (photo != null ? photo.hashCode() : 0);
        result = 31 * result + (email != null ? email.hashCode() : 0);
        result = 31 * result + (yxbz != null ? yxbz.hashCode() : 0);
        result = 31 * result + (sorts != null ? sorts.hashCode() : 0);
        return result;
    }
}
View Code

   生成的映射文件:

<?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>

    <class name="com.rombo.hiberdemo.po.OrgaUserPO" table="orga_user" schema="db_test">
        <id name="uuid" column="UUID"/>
        <property name="orgaid" column="ORGAID"/>
        <property name="userid" column="USERID"/>
        <property name="mtype" column="MTYPE"/>
    </class>
</hibernate-mapping>
View Code

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這裡給大家詳細說一下Maven的運行機制,讓大家不僅知其然,更知其所以然。 1.插件保存在哪裡? 與我們所依賴的構件一樣,插件也是基於坐標保存在我們的Maven倉庫當中的。在用到插件的時候會先從本地倉庫查找插件,如果本地倉庫沒有則從遠程倉庫查找插件並下載到本地倉庫。 與普通的依賴構件不同的是,Mav ...
  • Java是一門面向對象的語言,那麼我們寫程式的時候最經常操作的便是對象了,為此,Java提供了一些專門用來處理對象的類庫,這些類庫的集合我們稱之為集合框架。Java集合工具包位於Java.util包下,包含了很多常用的數據結構,如數組、鏈表、棧、隊列、集合、哈希表等。學習Java集合框架下大致可以分 ...
  • 首先在頁面中我們直接寫一個標簽,然後給標簽定義一個id,這裡我們用什麼標簽都可以,我們就用<span></span>演示吧, 代碼如下: 上面我們實例化了一個Clock的對象,這裡我們就在外部定義一個Clock的類, 獲取當前時間併進行時間的格式化,代碼如下: 之後我們在頁面頭部中引入該js就好了: ...
  • Containers in Depth ___ Full container taxonomy You can usually ignore any class that begins with "Abstract." Filling containers This fill( ) just dup ...
  • HTML翻譯為超文本標記語言<標簽名>內容</標簽名>靜態網頁動態網頁的區別是看是否從數據中提取數據一般網頁由幾部分組分組成<html>開始標簽 <head>頭,即為網頁上的控制信息 <title>頁面上的標題</title> </head> <body,其屬性一般有bgcolor頁面背景色,tex ...
  • (1)首先要修改JDK中JMX服務的配置文件,以獲得相應的許可權: 進入$JAVA_HOME所在的根目錄的/jre/lib/management子目錄下, a. 將jmxremote.password.template文件複製為jmxremote.password b. 調整jmxremote.acc ...
  • 有想哪裡知道有做六合彩投註網站系統建設開發的嗎,我這邊可以做六合彩投註系統,如果需要的朋友可以私聊一下。 新版六合彩投註網站系統源碼 (測試完整可商業運行) 帶新開獎結果》》》》》 網站系統可以支持代理開設,股東發展,普通會用等常用的功能。 內附說明。資料庫文件 hs001 修改資料庫連接 文件夾 ...
  • 通過前面的介紹,我們已經能夠看到管理員界面並對Solr形成了一個感性的認識。本篇將在物理上深入瞭解Solr的安裝目錄結構和Solr示例的主目錄結構。 安裝目錄結構 Solr 6.3.0安裝文件夾裡面包含很多內容。這裡挑選一些重要的目錄進行說明。目錄結構如下: bin:大量的Solr控制台管理工具存在 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...