Spring Boot JPA生成實體類的3種方法

1 前言

如今不少人都在使用Spring Boot+MyBatis的方案,但使用Spring Boot+JPA(Hibernate)的也有很多。php

Jpa (Java Persistence API) 是 Sun 官方提出的 Java 持久化規範。它爲 Java 開發人員提供了一種對象/關聯映射工具來管理 Java 應用中的關係數據。它的出現主要是爲了簡化現有的持久化開發工做和整合 ORM 技術,結束如今 Hibernate,TopLink,JDO 等 ORM 框架各自爲營的局面。Spring Boot中默認使用的就是Hibernate。java

爲了方便使用java對象操做數據庫,JPA實現了一套java類和數據表的映射機制,但須要咱們要建立與表相對應的實體類,也就是一張表要建一個類,類名對應表名,類屬性對應表字段。要是表太多,光是這個實體類就會讓人寫到發狂。這麼麻煩事確定有人想到使用自動生成的方式,如今就來總結一下有哪些方法能夠快速生成JPA實體類。mysql

2 第一種:使用Eclipse生成實體類

2.1 項目添加JPA支持

若是你的項目不是JPA項目,首先要添加JPA支持。右鍵點擊項目->選擇configure->Convert JPA Projectgit

勾選JPA,而後下一步

選擇好要鏈接的數據庫,若是沒有你要的數據庫,能夠點擊Add connection添加數據庫鏈接,以後點擊完成,就完成的JPA的支持 github

2.2 使用JPA Tools生成實體類

對於有JPA支持的項目,咱們右鍵點擊項目,菜單中會有的JPA Tools選項,它能夠從實體類生成表,也能夠表生成實體類,選擇從表生成實體類,進入實體類生成配置界面sql

選擇數據庫以及要生成實體類的表數據庫

還能夠自定義每一個表,每一個字段的類型和名稱

最後點擊完成,就能夠生成實體類了session

3 第二種:使用IntelliJ IDEA生成實體類

對於使用IDEA工具的人,也是有相應的工具能夠生成實體類的app

3.1 添加JPA支持

在IDEA中,依次點擊File -> Project Structure,彈出配置界面。再點擊Modules - + - JPA,最後點擊Apply - OK框架

3.2 添加數據源

鏈接數據庫 點擊database窗口,添加數據源

3.3 生成實體類

點擊Persistence,一步步完成操做,就能夠生成實體啦

以上兩種工具生成的實體類,結構可能會有些許的不一樣,若是項目須要在兩個工具之間切換,通用性就會有一些問題。那麼有沒有一種更通用的方法呢,答案是有的,就是使用maven插件生成。

4 第三種:使用Maven插件生成實體類

使用Maven插件生成實體,和IDE無關,能夠定製更多的生成信息,好比字段映射、生成註釋等,更加的靈活。

插件地址:github.com/stadler/hib…

4.1 maven插件配置

在pom.xml中添加配置

<!--實體生成插件,運行hibernate-tools:hbm2java-->
<plugin>
    <groupId>com.github.stadler</groupId>
    <artifactId>hibernate-tools-maven-plugin</artifactId>
    <version>0.1.1</version>
    <executions>
        <execution>
            <id>Entity generation</id>
            <phase>deploy</phase>
            <goals>
                <goal>hbm2java</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <!--模板路徑,若是有定製模板,須要指定-->
        <!--<templatePath>${project.basedir}/src/main/resources</templatePath>-->
        <!-- Defaults: -->
        <outputDirectory>${project.basedir}/src/main/java/</outputDirectory>
        <!-- Hibernate數據庫鏈接屬性文件 -->
        <configFile>src/main/resources/hibernate.xml</configFile>
        <!-- 反轉規則配置文件,不是必須的 -->
        <!--<revengFile>src/main/resources/reveng.xml</revengFile>-->
        <!-- 生成實體類默認包 -->
        <packageName>com.example.loope.entity</packageName>
        <detectManyToMany>true</detectManyToMany>
        <detectOneToOne>true</detectOneToOne>
        <detectOptimisticLock>true</detectOptimisticLock>
        <createCollectionForForeignKey>true</createCollectionForForeignKey>
        <createManyToOneForForeignKey>true</createManyToOneForForeignKey>
        <!-- 若是設置爲true則生成JPA註解,若設置爲false則生成hbml.xml -->
        <ejb3>true</ejb3>
        <jdk5>true</jdk5>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.46</version>
        </dependency>
    </dependencies>
</plugin>
複製代碼

在resource下添加hibernate.xml和reveng.xml

4.2 hibernate.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<!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 元素用於配置Hibernate中的屬性鍵:值 -->
        <!-- hibernate.connection.driver_class : 鏈接數據庫的驅動 -->
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <!-- hibernate.connection.username : 鏈接數據庫的用戶名 -->
        <property name="hibernate.connection.username">root</property>
        <!-- hibernate.connection.password : 鏈接數據庫的密碼 -->
        <property name="hibernate.connection.password">123456</property>
        <!-- hibernate.connection.url : 鏈接數據庫的地址,路徑 -->
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/loope</property>
        <!-- 數據庫方言配置org.hibernate.dialect.MySQLDialect (選擇最短的) -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    </session-factory>
</hibernate-configuration>
複製代碼

4.3 reveng.xml反轉規則配置(不是必須的)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-reverse-engineering PUBLIC "-//Hibernate/Hibernate Reverse Engineering DTD 3.0//EN" "http://hibernate.org/dtd/hibernate-reverse-engineering-3.0.dtd">
<hibernate-reverse-engineering>
    <type-mapping>
        <!--這裏配置須要映射的類型-->
        <sql-type jdbc-type="DATE" hibernate-type="java.util.Date"/>
        <sql-type jdbc-type="TIMESTAMP" hibernate-type="java.util.Date"/>
        <sql-type jdbc-type="NUMERIC" hibernate-type="java.lang.Double"/>
        <sql-type jdbc-type="DECIMAL" hibernate-type="java.lang.Double" />
    </type-mapping>
</hibernate-reverse-engineering>
複製代碼

如今運行hibernate-tools:hbm2java便可生成實體

若是想要更多的自定義生成,能夠下載hibernate-tools的jar包,拷貝里面的pojo目錄到模板目錄下,並修改相應的模板文件便可。

相關文章
相關標籤/搜索