Java 如何配置intellij idea以使用hibernate持久化工具并从外部jar文件读取映射文件

Java 如何配置intellij idea以使用hibernate持久化工具并从外部jar文件读取映射文件,java,hibernate,intellij-idea,hql,Java,Hibernate,Intellij Idea,Hql,假设我在下面有一个hibernate.cfg.xml文件,其中包含数据源配置和到包含.hbm.xml映射的jar文件的路径: <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configu

假设我在下面有一个
hibernate.cfg.xml
文件,其中包含数据源配置和到包含
.hbm.xml
映射的jar文件的路径:

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property>
        <property name="hibernate.connection.url">jdbc:oracle:thin:@192.168.251.134:1521:DB</property>
        <property name="hibernate.connection.username">rgh</property>
        <property name="hibernate.connection.password">rgh</property>
        <property name="hibernate.connection.pool_size">10</property>
        <property name="show_sql">true</property>
        <property name="hibernate.connection.internal_logon">normal</property>
        <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
        <property name="hibernate.hbm2ddl.auto">none</property>
        <property name="hibernate.default_schema">rgh</property>
        <property name="hibernate.connection.datasource">jndi</property>
        <!-- Mapping files -->

        <mapping jar="C:\Users\Ghafari\.m2\repository\org\rgh\goodsCirculation\1.0-releases\goods-1.0-releases.jar"></mapping>
        <mapping jar="C:\Users\Ghafari\.m2\repository\org\rgh\core\1.0-releases\core-1.0-releases.jar"></mapping>
        <mapping jar="C:\Users\Ghafari\.m2\repository\org\rgh\framework\2.1.1-releases\framework-2.1.1-releases.jar"></mapping>
    </session-factory>
</hibernate-configuration>

oracle.jdbc.OracleDriver
jdbc:oracle:thin:@192.168.251.134:1521:DB
rgh
rgh
10
真的
正常的
org.hibernate.dialen.oracle10galent
没有一个
rgh
jndi
我应该如何配置intellij idea以使用hibernate控制台和编写hql查询? 每个jar文件只包含
.hbm.xml
文件

更新

我不能像
那样放置每个映射,因为我有1500多个
.hbm.xml
文件

更新


我最近从Eclipse迁移到Intellij Idea,在Eclipse hql编辑器中,工具可以正确地处理这个hibernate.cfg.xml文件,但是Intellij Idea不能工作。

您可以使用LocalSessionFactoryBean的setMappingJarLocations方法来加载jar位置的类。以下是一个例子:

public static SessionFactory buildSessionFactory(DatabaseData dbData) {
    SessionFactory sessionFactory = null;
    try {

        if (dbData != null) {
            // logger.info("dbData not null");
            // logger.info("dbData driver : "+dbData.getDataSourceDriver());
            // logger.info("dbData IP : "+dbData.getDatabaseIP());
            logger.info("dbData  DBNAme : " + dbData.getDatabaseSchema());
            // logger.info("dbData Uname "+dbData.getDatabaseUserName() +"
            // pwd :
            // "+dbData.getDatabaseUserName());

            DriverManagerDataSource dataSource = new DriverManagerDataSource();
            dataSource.setDriverClassName(dbData.getDataSourceDriver());
            dataSource.setUrl("jdbc:mysql://" + dbData.getDatabaseIP() + ":" + dbData.getDatabasePort() + "/" + dbData.getDatabaseSchema()
                    + "?autoReconnect=true&useSSL=false");
            dataSource.setUsername(dbData.getDatabaseUserName());
            dataSource.setPassword(dbData.getDatabasePassword());

            LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean();
            sessionFactoryBean.setDataSource(dataSource);

            Properties hibernateProperties = new Properties();
            // hibernateProperties.put("hibernate.dialect",
            // HIBERNATE_DIALECT);
            hibernateProperties.put("hibernate.show_sql", false);
            //hibernateProperties.put("hibernate.hbm2ddl.auto", "update");
            sessionFactoryBean.setHibernateProperties(hibernateProperties);

// load the entity classes from a package
//sessionFactoryBean.setPackagesToScan("com.**.**.entity");
//load the entity classes from jar
sessionFactoryBean.setMappingJarLocations("location for jar file");
                sessionFactoryBean.afterPropertiesSet();
                return sessionFactoryBean.getObject();
            }
        } catch (Exception ex) {
            logger.error("Initial SessionFactory creation failed.", ex);
            ex.printStackTrace();
            throw new ExceptionInInitializerError(ex);
        }
        return sessionFactory;
    }
DatabaseData类包含数据库url、用户名和密码等:

public class DatabaseData {

private String databaseIP;
private String databasePort;
private String databaseName;
private String databaseSchema;
private String databaseUserName;
private String databasePassword;
private String dataSourceDriver;
private int timeout;
}

我如何在intelij idea持久性工具中使用这个类?我想你误解了我的问题,请检查我的问题更新