Tag: ddl

如何从java代码为我的jpa实体创建一个ddl?

我找了一种方法,我可以为我的jpa注释实体创建一个ddl。 我更喜欢纯粹的java方式。 如果可能的话,生成drop语句也会很好。

unit testing需要在事务中的DDL语句

我正在开发一个使用Oracle内置身份validation机制来管理用户帐户和密码的应用程序。 该应用程序还使用行级安全性。 基本上,通过应用程序注册的每个用户都获得Oracle用户名和密码,而不是“USERS”表中的典型条目。 用户还会在某些表格上收到标签。 这种类型的function要求在许多实例中组合执行DML和DDL语句,但这会产生问题,因为DDL语句执行隐式提交。 如果在执行DDL语句后发生错误,则事务管理不会回滚所有内容。 例如,当新用户向系统注册时,可能会发生以下情况: 开始交易 将人员详细信息插入表格中。 (即名字,姓氏等)-DML 创建一个oracle帐户(创建用密码标识的用户testuser;)-DDL隐式提交。 交易结束。 新交易开始。 执行更多DML语句(插入,更新等)。 发生错误,事务仅回滚到步骤4。 据我所知,上述逻辑按设计工作,但我发现很难对这类function进行unit testing并在数据访问层进行管理。 我的数据库出现故障或unit testing期间发生错误导致测试模式被应回滚的测试数据污染。 当发生这种情况时,很容易擦除测试模式,但我担心生产环境中的数据库故障。 我正在寻找管理这个的策略。 这是一个Java / Spring应用程序。 Spring提供了事务管理。

使用Hibernate中的注释定义默认列值

我知道这里有很多关于SO和网络的问题,但是所有答案建议使用columnDefinition ,这是特定于数据库的,因此不适合我,因为我正在研究的系统需要在不同的数据库上运行。 我发现了这个hibernate问题 ,有人请求注释这个function。 问题已经结束,说另一个问题将涵盖该function。 第二个问题显然添加了注释@Generated以及其他一些注释,但我找不到任何关于如何使用这些新注释定义默认列值的文档。 所以我的问题是:有谁知道如何使用注释定义默认列值(而不是使用columnDefinition )? 编辑:进一步澄清我的问题:当我添加一个新的非空列时,我需要Hibernate来更新现有的模式(将新列添加到相应的表)。 但由于该列为非null,因此数据库无法在未指定默认值的情况下创建列(如果表中已存在某些行)。 所以我需要指示Hibernate发出以下DDL语句: ALTER TABLE my_table ADD COLUMN new_column VARCHAR(3) DEFAULT ‘def’ ,但它必须独立于使用的数据库。

从JPA实体反向设计DDL

我正在玩一些JPA的东西,改变映射以了解它们应该是什么样的等等。这是基本的实验。 但是我找不到一个简单地读取我的实体然后为我生成表模式的工具。 我试图在JBoss工具中找到类似的东西,但是nada。 Eclipse集成将是一个巨大的优势,但我会采取命令行工具或ant任务。 有任何想法吗?