Hibernate从源代码

时间:2016-07-18 10:00:48

标签: java mysql hibernate jpa jpa-2.0

我目前正在开发一个需要根据Java源代码确定数据库架构的项目。作为项目的一部分,我打算为使用JPA v2的代码库执行此操作,但现在我专注于Hibernate实现。

为了使这更具体,假设我提供了一个文件夹或JAR(未编译的)java文件。从这里,我想确定如果编译和运行此代码将创建哪些表(和相应的列)(例如,在持久性中使用hibernate.hbm2ddl.auto =' create'参数。 Hibernate实现的xml文件,以及作为创建这些表的基础的类和集合(即关系)。第二个方面是该场景的关键,因为我想稍后使用这个class-table / collection-table映射。

示例 请考虑以源类代码提供的以下类定义:

@Entity
public class Animal {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Basic
    private String name;

    @ElementCollection
    private List<String> callingNames;

    @ManyToMany
    private List<Food> favoriteFoods;
}

我想从这个(和辅助类)中扣除的是一个类似于此的映射:

{'Animal.class': 'Animal', 'Food.class': ...},  {'Animal.favoriteFoods':{table:'Animal_Food', sourceColumn:'Animal_id', targetColumn:...}, ...} 

(因为默认情况下,Hibernate为多对多关系生成一个名称格式为 OwnerTableName_TargetTableName 的连接表)

为了实现这一目标,我查看了各种工具,例如可用于导出数据库创建脚本的hbm2ddl和支持数据库某种源控制的liquibase。但是,我没有看到这些工具可以用来实现这种映射的方式。 org.hibernate.cfg.Configuration类看起来也很有趣,但似乎只是从类路径(即编译)或XML配置文件中的类构建映射。我想避免编译源代码,因为输入可能涉及大型和零碎的项目。此外,我想避免要求任何* .hbm.xml文件作为输入,以免对我的系统用户施加过多的配置要求。

TL; DR所以它基本上归结为以下问题:有没有办法可以从Hibernate的源代码中确定类表/关系表数据库映射?我不想求助于编译源代码来查找,并希望数据库模式和导致它们创建的类/集合。

任何与其他实现相关的指示和/或工具也是受欢迎的,如果这会在映射中造成相当大的差异。

提前致谢!

0 个答案:

没有答案