在另一个项目中复制像POJO这样的Hibernate实体的最简洁方法

时间:2017-03-17 12:42:04

标签: java hibernate maven jpa retrofit2

我有多模块Maven项目:

  1. 带有注释实体的JPA模块(Hibernate实现)。

  2. Rest-Service模块 - 依赖于模块1.和端点使用模块1中的实体序列化JSON。

  3. Rest-Client模块:该库基于retrofit2(此jar库也用于Java-EE Web项目和Android),并且用于反序列化JSON模型,它需要依赖于模块1也是。但是这里的实体需要是简单的POJO(没有JPA注释)

  4. 我不希望模块3依赖于模块1并在RestClient中包含所有Hibernate jar(它不需要它)。

    我不想仅在模块3中复制实体并手动删除注释..很难在两个地方更改实体。

    我正在尝试使用Maven Dependency plugin复制实体..但不清楚是否可以使用此插件删除注释?这是最干净的方式吗?

1 个答案:

答案 0 :(得分:0)

经过多次研究后,我向我的RestService添加了极大的支持:

https://github.com/zhouhao/swagger-spring-boot-jersey

生成Rest Client模块,其中swagger-codegen-maven-plugin用于Java,swagger-codegen-gradle-plugin用于Android Gradle项目。 这是我对gradle-plugin的配置:

swagger {
    inputSpec = 'http://petstore.swagger.io/v2/swagger.json'

    outputDir = "${rootDir}/swagger-client"
    lang = 'java'

        additionalProperties = [
                'groupId'           : 'com.orgname',
                'artifactId'        : 'swagger-java-client',
                'artifactVersion'   : '1.0.0',
                'invokerPackage'    : 'com.orgname.client.retrofit2',
                'modelPackage'      : 'com.orgname.client.retrofit2.model',
                'apiPackage'        : 'com.orgname.client.retrofit2.api',
                'library'           : 'retrofit2',
                'useRxJava2'        : 'true',
                'useGzipFeature'    : 'true',
                'serializableModel' : 'true',
                'dateLibrary'       : 'java7',
                'templateDir'       : "src/main/resources/Java/libraries/retrofit2"
        ]
    }

模型是从RestService生成的,不需要依赖Hibernate Entities模型,我认为这是最简洁的方法,只需要最少的人力。