Java 冬眠多元化

Java 冬眠多元化,java,hibernate,orm,netbeans,pluralize,Java,Hibernate,Orm,Netbeans,Pluralize,我有 当前正在生产中用于CakePHP应用程序的MySQL数据库 通过Hibernate访问同一数据库的JavaSE应用程序,目前正在开发中 我正在使用Netbeans的“自动迁移”功能来创建POJO类和XML文件(在使用注释时我真的需要XML文件吗?)。由于模式非常复杂,手动创建表的工作量太大 Cake希望所有DB表都是复数的(Address类自动映射到addresses表)。当运行Netbeans自动迁移时,它会对已经复数化的表名进行复数化(我得到Addresses.java和setAd

我有

  • 当前正在生产中用于CakePHP应用程序的MySQL数据库
  • 通过Hibernate访问同一数据库的JavaSE应用程序,目前正在开发中
我正在使用Netbeans的“自动迁移”功能来创建POJO类和XML文件(在使用注释时我真的需要XML文件吗?)。由于模式非常复杂,手动创建表的工作量太大

Cake希望所有DB表都是复数的(Address类自动映射到addresses表)。当运行Netbeans自动迁移时,它会对已经复数化的表名进行复数化(我得到Addresses.java和setAddresseses()方法)


我知道在同一个数据库上运行两个非常不同的数据层是自找麻烦,但我想知道是否有可能让Netbeans以单数形式生成POJO类,或者是否有其他(更好的)方法来管理它

进行逆向工程时,可以使用。引用文件:

可以实现一个用户 战略。这种战略必须实施
org.hibernate.cfg.reveng.ReverseEngineeringStrategy.
建议使用
delegatingreverseeengineeringstrategy
并提供一个公共构造函数 再拿一个
ReverseEngineeringStrategy
as 论点这将只允许您 落实相关方法和措施 提供后备策略。例子 自定义授权策略的 转换结束的所有列名 将“PK”转换为名为“id”的属性

在您的情况下,您可能希望实现

public String tableToClassName(TableIdentifier tableIdentifier) {
    return delegate==null?null:delegate.tableToClassName(tableIdentifier);
}
将从表名(
地址
=>
地址
)生成的类“去模糊化”

但遗憾的是,如果用户碰巧有反向工程策略,NetBeans没有提供选择反向工程策略的选项(如果时间允许,这是为NetBeans 7.0计划的增强)

因此,如果您想使用自定义策略,就必须使用Ant或Maven。这在NetBeans中目前是不可能的

public String tableToClassName(TableIdentifier tableIdentifier) {
    return delegate==null?null:delegate.tableToClassName(tableIdentifier);
}