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目录到模板目录下,并修改相应的模板文件便可。

相关文章
相关标签/搜索