gpt4 book ai didi

java - 如何在hibernate中从hibernate.cfg.xml加载所有xml映射文件?

转载 作者:行者123 更新时间:2023-11-30 07:37:37 24 4
gpt4 key购买 nike

假设我在这里指定了一个特定的 test.hbm.xml 文件。相反,我想加载包中可用的所有 hbm.xml 文件。我有很多 hbm.xml 映射文件。我不想指定它们中的每一个,而是想加载所有它们。怎么做?是否可以通过 hibernate.cfg.xml 文件加载它们?

hibernate-configuration>
<session-factory>
<property name="hibernate.bytecode.use_reflection_optimizer">false</property>
<property name="hibernate.connection.driver_class">org.h2.Driver</property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.connection.url">jdbc:h2:mem:dbUnitTest;DB_CLOSE_DELAY=-1;INIT=CREATE SCHEMA IF NOT EXISTS SFMFG\;SET SCHEMA SFMFG</property>
<property name="hibernate.connection.username">sa</property>
<property name="hibernate.dialect">org.hibernate.dialect.H2Dialect</property>
<property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
<property name="hibernate.cache.use_second_level_cache">true</property>

<mapping resource="test.hbm.xml"/>
</session-factory>
</hibernate-configuration>

最佳答案

据我所知,您无法在 XML 中执行此操作(但是您可能想再次检查一下)

但是,当您创建 SessionFactory 对象时,您仍然可以获得所需的结果。

这是一个以编程方式添加测试文件夹 com/hbmfiles 下列出的所有 *.hbm.xml 文件的解决方案:

private static SessionFactory buildSessionFactory() {
try {
Configuration configuration = new Configuration();

configuration.configure("/com/persistence/hibernate.cfg.xml");

File[] files = new File("com/hbmfiles").listFiles();

for(File file : files) {
if(file.toString().endsWith("hbm.xml"))
configuration.addResource(file);
}

SessionFactory sessionFactory = configuration.buildSessionFactory();

return sessionFactory;

} catch (Throwable ex) {
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}

注意:上面的代码没有编译,但你肯定会得到想要的结果。

关于java - 如何在hibernate中从hibernate.cfg.xml加载所有xml映射文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35172440/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com