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,你能解释一下为什么需要这个委托吗?我想你是在问为什么需要仪器。如果是这种情况,请参阅本页: