我正在开发一个声纳插件,我对它有一些疑问。 我的插件需要从数据库中检索数据来操作它们并在页面中显示它们。
目前,我的插件是使用JDBC驱动程序查询数据库,但我认为这将是生产中的问题。 所以我想找到一种方法,使用API或声纳对象从我的插件连接和查询数据库(只是选择查询)...
我知道有一些WebService,但是他们没有提供我需要的所有信息,所以我必须自己进行查询。
我的插件适用于Sonarqube 4.1。
我希望我的解释清楚。
答案 0 :(得分:1)
我想我找到了解决方案:
我有一个Class在构造函数中检索databaseSessionFactory。我在某地读过Sonar使用构造函数的依赖注入。
public class MyClass implements WebService{
privateDatabaseSessionFactory sessionFactory;
public MyClass(DatabaseSessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
}
之后,在这个类中,我可以使用SessionFactory变量来查询数据库:
DatabaseSession s = sessionFactory.getSession();
String sqlQuery ="SELECT d.data FROM " + SnapshotSource.class.getName() + " d "
+ "WHERE d.id = :Id";
Query query = s.createQuery(sqlQuery);
query.setParameter("Id", 1);
List<String> queryResult = (List<String>) query.getResultList();
//queryResult.get(0) contains the source
在此示例中,我获取了数据库中的第一个快照源。 我希望它是一个很好的解决方案,它可以帮助任何人。
答案 1 :(得分:0)
您不应直接查询SonarQube数据库。数据库架构是私有的,如有更改,恕不另行通知,此外,您还有可能对SonarQube本身产生副作用。
如果您需要从数据库中读取一些内容,您应该使用Web服务API来查询SonarQube操作的大多数“对象”。 在这种情况下,这不是一个真正的插件,只是一个外部客户端应用程序。
如果您想编写一个在SonarQube UI中显示内容的SonarQube插件(如自定义小部件),您还可以使用SonarQube Java API。