Java ActiveJdbc检测编译器从哪里获取有关数据库的信息?

Java ActiveJdbc检测编译器从哪里获取有关数据库的信息?,java,maven,activejdbc,Java,Maven,Activejdbc,如果理解正确,ActiveJdbc编译器应该像这样将空类作为输入 public class Employee extends Model {} 并用数据库元数据中的一些代码填充它 但它如何知道数据库的位置呢 我在这里只找到一个提到数据库的地方,即 Base.open("com.mysql.jdbc.Driver", "jdbc:mysql://localhost/test", "user1", "xxxxx"); 那么,插装编译器是否会扫描代码以查找对Base.open()的调用,并对其进行

如果理解正确,
ActiveJdbc
编译器应该像这样将空类作为输入

public class Employee extends Model {}
并用数据库元数据中的一些代码填充它

但它如何知道数据库的位置呢

我在这里只找到一个提到数据库的地方,即

Base.open("com.mysql.jdbc.Driver", "jdbc:mysql://localhost/test", "user1", "xxxxx");
那么,插装编译器是否会扫描代码以查找对
Base.open()
的调用,并对其进行URL解析

真不敢相信。如果有多个对不同数据库的调用怎么办

如果没有
Base.open()
调用该怎么办?

查看,is的基本功能是:

  • 查找
    org.javalite.activejdbc.Model
    和每个类的非抽象子类
    • 添加委托给
      org.javalite.activejdbc.Model
      的方法,包括:
      • 公共静态元模型getMetaModel()
      • 公共静态列表属性()
      • 公共静态列表关联()
      • 公共静态int-delete(字符串查询、对象…参数)
      • 存在公共静态布尔值(对象id)
      • public static int deleteAll()
      • 公共静态int更新(字符串更新、字符串条件、对象…参数)
      • publicstaticintupdateall(字符串更新、对象…参数)
      • 还有更多
    • 添加
      公共静态字符串getClassName()
      方法,该方法返回类的完全限定名
    • 在包含
      model.getName()+“:“+getDatabaseName(model)+”\n“
      activejdbc\u models.properties
      文件中添加一行,其中第一个方法返回类的完全限定名,第二个方法返回类上的
      @DbName
      注释或
      默认值”
      如果找不到注释

所有数据库元数据都是在运行时解析的,而不是在编译或检测阶段。

您阅读了吗?我不认为它连接到数据库来完成它的工作,这主要是创建静态方法。看起来它只使用了类代码中描述的内容。类代码中没有描述任何内容。类在
ActiveJdbc
中是空的。在您的链接中说,“如果没有检测,ActiveJDBC将无法知道要查询哪个表。”这意味着,有了检测,ActiveJDBC确实知道。我的问题是怎么做?这是一个正确的答案。与ActiveRecord一样,ActiveJDBC在您第一次使用任何模型类时从数据库读取元数据。添加
activejdbc.log
system属性,以便在发现表和关系时查看输出。关于这方面的更多信息,请参考:@ipolevoy,你能解释一下为什么需要这个委托吗?我想你是在问为什么需要仪器。如果是这种情况,请参阅本页: