Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试查找Spring/Hibernate应用程序使用的数据库_Java_Spring_Oracle_Hibernate_Reverse Engineering - Fatal编程技术网

Java 尝试查找Spring/Hibernate应用程序使用的数据库

Java 尝试查找Spring/Hibernate应用程序使用的数据库,java,spring,oracle,hibernate,reverse-engineering,Java,Spring,Oracle,Hibernate,Reverse Engineering,我继承了一项吃力不讨好的任务,那就是试图对一个特别复杂的web应用程序进行反向工程。更准确地说,应用程序存储数据的位置。最初的开发者们早已离开,去了更绿色的牧场,以至于没有人记得他们可能是谁 该应用程序显然将Spring与Hibernate结合使用。准确地说,我在WEB-INF/spring/datasourceContext.xml中找到了这两个数据源配置: <bean id="oliteTechDataSource" name="oliteTechDataSource" cla

我继承了一项吃力不讨好的任务,那就是试图对一个特别复杂的web应用程序进行反向工程。更准确地说,应用程序存储数据的位置。最初的开发者们早已离开,去了更绿色的牧场,以至于没有人记得他们可能是谁

该应用程序显然将Spring与Hibernate结合使用。准确地说,我在WEB-INF/spring/datasourceContext.xml中找到了这两个数据源配置:

<bean id="oliteTechDataSource" name="oliteTechDataSource"
    class="xxx.yyy.zzz.datasource.tttDataSource" init-method="init">
    <property name="driverClassName">
        <value>oracle.lite.poljdbc.POLJDBCDriver</value>
    </property>
    <property name="url">
        <value>jdbc:polite:</value>
    </property>
    <property name="password">
        <value>MANAGER</value>
    </property>
    <property name="database">
        <value>BIRNBAUM</value>
    </property>
</bean>
以及:

这两个片段似乎相互矛盾:第一个片段表示Oracle Lite,第二个片段表示“完整”Oracle。我发现后者的一个实例在这台机器上运行,即SQL*Plus报告的11.2.0.2.0版本。第二个代码段的凭据允许我登录,但除了几个系统表之外,该数据库似乎是空的。确切地说,在查询所有_表中的SELECT OWNER、TABLE_NAME、NUM_ROWS时,只有行数非空的表由SYSTEM或SYS所有。我现在最好的客人是数据保存在第一个代码片段中提到的数据库中,但我还没有找到它的踪迹

当故意使提到的Oracle实例崩溃时,应用程序停止工作,因此我假设第一个代码段可能是从未删除的某个旧版本的遗留部分。这仍然给我留下了一个问题,即数据可能在数据库中的确切位置。通过使用上面提到的凭据登录,我得到了一个非常小的表列表,这些表由一个类似的用户拥有——让我们称他为apfeladmin,这显然不是Oracle默认用户。所有这些表都有C$之类的名称。C$TABLE_列表尤其包含我在反汇编应用程序时在查询中找到的表的名称


但实际的桌子在哪里?我知道冬眠和春天是什么,但不知道更多。我只有编译过的类,还有一堆XML文件。是否有可能从中辨别出数据应该如何在数据库中布局?一个“典型”的HibernateERP应用程序将如何做到这一点?我想一旦我知道我在找什么,我就能找到它。或者这仅仅是一个权限问题,在我成功获得DBA访问权限之前,我将无法获得任何进一步的权限,因为已经没有人可以访问了,所以这并不像应该的那么简单?

请确保您拥有访问所需数据库的正确权限。某些数据库软件根据权限隐藏部分数据库


因此,尝试以管理员身份访问或暴力强制可能会奏效。这完全取决于数据库的权限设置。

除了几个系统表之外,该数据库似乎是空的-您是如何确定的?我绝不是专家,但您确定您有访问所需数据库的权限吗?某些数据库软件根据权限隐藏数据库的某些部分。@PerryMonschau:你的直觉是正确的。出于绝望,我试图强行进入SYSDBA帐户,但实际上成功了。看哪:突然所有的桌子都在那里了。你愿意把它作为一个答案,这样我就可以勾选它了吗?
<bean id="opeTechDataSource" name="opeTechDataSource"
    class="xxx.yyy.zzz.datasource.uuuDataSource"
    init-method="init">
    <property name="driverClassName">
        <value>oracle.jdbc.OracleDriver</value>
    </property>
    <property name="url">
        <value>jdbc:oracle:thin:@localhost:1521:orcl11g</value>
    </property>
    <property name="username">
        <value>apfelbaum</value>
    </property>
    <property name="password">
        <value>zypresse</value>
    </property>
</bean>