我想知道有哪些替代方案可以替代Apache的DDL工具.
我问这个是因为ddlutils项目接缝是死的,而且它也不支持H2数据库.我搜索过它,然后找到像液体基地或飞路这样的建议.
我的问题是:这些框架在项目启动时运行,并根据某些XML文件更改数据库结构.它们真的是为数据库迁移而设计的.
我想要的是一个在高抽象级别运行时CREATE/ALTER表的框架,即至少支持Mysql,Sqlserver,oracle和H2.
例如,我可以告诉引擎我想创建一个带有类型编号的Field AGE的表,框架将改写为:
create table MY( id bigint(20))
create table MY(id bigint)
create table MY (id, number)
Run Code Online (Sandbox Code Playgroud)
取决于底层的数据库引擎.
有什么建议?
我可以看到ddlutils有一个补丁,因为它支持H2.但是我无法修补我的svn结账...
任何帮助将不胜感激.
谢谢提前瑞
我对java.sql.DatabaseMetaData界面很熟悉,但我发现它非常笨重.例如,为了找出表名,您必须使用众所周知的文字作为列名来调用getTables并循环返回ResultSet.
是否有更简单的方法来获取数据库元数据?
我正在寻找一个轻量级,开源,或多或少的跨数据库Java库,这将允许我读取关于列,表和完整性约束的元信息DataSource.
我想将 HSQLDB 用作嵌入式数据库,但无法让它自动递增。
据我了解,[CALL] IDENTITY()可以用来获取最后一个主键值。然而,通过 iBatis 和 HSQLDB 的实验DatabaseManagerSwing不断返回 0 值。
如何获得自动增量以与 HSQLDB 一起使用?
编辑:
我没有提到我使用DDLUtils来自动生成表。以下不适合 HSQLDB:
<?xml version="1.0"?>
<!DOCTYPE database SYSTEM "http://db.apache.org/torque/dtd/database.dtd">
<database name="testdb">
<table name="users">
<!-- using autoincrement attribute below causes
"primary key already exists" exception -->
<column name="id" type="INTEGER" primaryKey="true" />
<column name="username" type="VARCHAR" size="30" />
<column name="password" type="VARCHAR" size="100" />
</table>
</database>
Run Code Online (Sandbox Code Playgroud)
此外,这里是用于域类的 iBatis SQL 映射:
<insert id="insertUser" parameterClass="user">
<selectKey keyProperty="id" resultClass="int">
CALL IDENTITY()
</selectKey>
INSERT …Run Code Online (Sandbox Code Playgroud)