当前位置: 首页 > 面试题库 >

如何在运行时在Hibernate中创建数据库?

厉高逸
2023-03-14
问题内容

我正在使用Hibernate租约,并且每次用户登录时,我都将数据库更改为其用户名(SQLite)。可悲的是,有时数据库不存在,我需要创建它。

问题是我不知道如何在运行时在数据库中创建所有表。

通常,Hibernete为此创建数据库:

<property name="hibernate.hbm2ddl.auto">update</property>

问题答案:

创建数据库之后,可以为此使用SchemaExport导出要在新创建的数据库中创建的实体。基本步骤如下。如何获取配置的属性并不重要。

    Configuration config = new Configuration();
    config.addAnnotatedClass(Class1.class);
    config.addAnnotatedClass(Class2.class);
    config.addAnnotatedClass(Class3.class);
    <set all hibernate properties/datasource here>
    SchemaExport schema = new SchemaExport(config);
    schema.create(true, true);

Javadocs在这里:http
:
//docs.jboss.org/hibernate/orm/3.3/api/org/hibernate/tool/hbm2ddl/SchemaExport.html

有关设置配置的选项,请参见此处。http://docs.jboss.org/hibernate/orm/3.3/api/org/hibernate/cfg/Configuration.html

编辑: 我想有一点要补充的一点是,让hibernate模式在生产环境中处理DB / SCHEMA /
TABLE创建被认为是不好的做法。根据需要和可行性,最好为此保存准备好的SQL语句,甚至由数据库管理员手动进行。但是,由于我们都很懒惰,我想那通常不会发生。;
D



 类似资料:
  • 问题内容: 我正在使用,并且正在尝试运行一个简单的应用程序,尤其是运行在page中描述的应用程序。我的hibernate.cfg.xml文件是: 我(使用maven时)是: 我在链接中使用它: 但是,不可能获得应用程序的工作,即在数据库中hibernate创建表并插入值。无论尝试如何,我总是会收到相同的错误: 在线上的“关系部门不存在”: 我也没有完全相同的错误尝试过。为了抢占某些读者,请不要在数

  • 接到了我人生中第一个测试任务的工作,我需要做一个Rest的服务。其中一个要求是:“应用程序应使用 maven 构建,而无需安装或配置任何其他组件;”在此之前,我编写了我的企业应用程序,但我通过 pgAdmin 手动创建了数据库本身,并使用源代码运行了一个 sql 脚本来创建如下表: 现在,据我所知,我的应用程序启动了,我的代码必须以某种方式动态创建数据库,或者可能需要其他东西,例如远程数据库。我不

  • 我正在连接多个数据源,但有时某些数据源可能处于脱机状态,此时我在应用程序上遇到错误,应用程序在启动时失败。 我想在启动时跳过数据源配置...我已经尝试了几种方法 application.properties,我也试着添加 到主类,但它仍然试图配置数据源。 我还尝试在所有方法和构造函数上使用@Lazy注释,如下所示,但在创建efEntityManagerFactory时仍然出错 对于不同数据源的不同

  • 我试图根据用户输入动态创建一个单声道序列。我正在调用rest API并在Mono中获得ClientResponse。我的用例是在一个序列中调用2个或多个API,下一个API的输入负载取决于前一个API的输出。 我的硬编码序列操作看起来像 这是很好的工作,但我想让这个方法通用。我想从用户的POJO列表中获取所有必需的参数,并基于列表输入创建flatMap序列。因此,如果列表的长度为2,则将有2个平面

  • 问题内容: 我想在Oracle数据库中创建一个临时表 就像是 在SQL Server中 然后用选择语句填充它 是否有可能? 谢谢 问题答案: 是的,Oracle有临时表。这是描述它们的AskTom文章的链接,这是oracle的官方CREATE TABLE文档。 但是,在Oracle中,只有临时表中的 数据 是临时的。该表是其他会话可见的常规对象。在Oracle中频繁创建和删除临时表是一种不好的做法

  • 我正在用Spring Data JPA做一个项目。 我已经设法用BeanFactoryPostProcessor动态创建了datasource,并在使用AbstracTroutingDataSource登录时切换到所需的datasource。 现在我想在运行时做的是: 使用BeanFactoryPostProcessor获取动态数据源映射 创建新的数据源 将最近创建的数据源与其他数据源一起放在映射