文章转自:http://ivan4126.blog.163.com/blog/static/20949109220137753214811/
在某项目中用到了 hibernate ,大家都知道 hibernate 是 ORM 框架,他是有能力根据实体生成数据库表的。我们在单元测试的时候用到了 dbUnit ,dbUnit 可以帮助我们在测试前把数据库的测试数据准备好,然后我们就利用现成的数据库环境测试,测试完成后需将数据库中的所有数据清除(为了不影响其他的单元测试),然后接着下一个测试。虽然已经有快一年多没更新了,dbUnit 整体使用还是不错的,但在清除数据的时候dbUnit 就似乎有些力不从心了。当表有自关联(表中有外键引用自己)的时候就有问题了,因为外键约束,数据总是不能清除。
dbUnit 不给力,那咱们自己可就要给力啊。学过 java 的人,应该也都学过 jdbc,jdbc 不仅可以操作数据库,还可以获取数据库中的 元(meta)信息,比如数据库中有哪些表,表中有哪些列等等。
我们要使用的核心类是 java.sql.DatabaseMetaData ,可以通过 java.sql.Connection#getMetaData() 来获得。
Java代码
Connection conn = ...;
DatabaseMetaData dbMetaData = conn.getMetaData();
获取所有表</