Java 如何使用hibernate设置H2服务器模式?
我有一个maven项目,需要内存中的DB来存储数据过滤后的数据集,因为它只是一个ETL项目,所以它不使用spring/spring启动框架,所以使用hibernate来构建嵌入式H2。(教程) 它工作得很好,我可以对我的H2进行CRUD,但我不知道是否要使用远程spring引导项目连接到这个H2 DB,我应该设置什么 以下是我在maven项目中的文件: pom.xml 在SpringBoot项目中(我已经运行了Java 如何使用hibernate设置H2服务器模式?,java,hibernate,h2,Java,Hibernate,H2,我有一个maven项目,需要内存中的DB来存储数据过滤后的数据集,因为它只是一个ETL项目,所以它不使用spring/spring启动框架,所以使用hibernate来构建嵌入式H2。(教程) 它工作得很好,我可以对我的H2进行CRUD,但我不知道是否要使用远程spring引导项目连接到这个H2 DB,我应该设置什么 以下是我在maven项目中的文件: pom.xml 在SpringBoot项目中(我已经运行了db2.datasource.url=jdbc:h2:mem:test,它工作正常,所
db2.datasource.url=jdbc:h2:mem:test
,它工作正常,所以我只粘贴属性代码):
应用程序属性
db2.datasource.driverClassName=org.h2.Driver
db2.datasource.url=jdbc:h2:tcp://10.250.31.42:9092/mem:test
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
db2.datasource.username=sa
db2.datasource.password=
有人能帮我解决这个问题吗?
谢谢
卡斯
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- JDBC Database connection settings -->
<property name="connection.driver_class">org.h2.Driver</property>
<property name="connection.url">jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</property>
<property name="connection.username">sa</property>
<property name="connection.password"></property>
<!-- JDBC connection pool settings ... using built-in test pool -->
<property name="connection.pool_size">1</property>
<property name="jdbc.fetch_size">10000</property>
<property name="jdbc.batch_size">10000</property>
<!-- Select our SQL dialect -->
<property name="dialect">org.hibernate.dialect.H2Dialect</property>
<!-- Echo the SQL to stdout -->
<property name="show_sql">true</property>
<!-- Set the current session context -->
<property name="current_session_context_class">thread</property>
<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">create-drop</property>
<!-- dbcp connection pool configuration -->
<property name="hibernate.dbcp.initialSize">5</property>
<property name="hibernate.dbcp.maxTotal">20</property>
<property name="hibernate.dbcp.maxIdle">10</property>
<property name="hibernate.dbcp.minIdle">5</property>
<property name="hibernate.dbcp.maxWaitMillis">-1</property>
<mapping class="cic.cs.unb.ca.hibernate.entity.CICFlowMeterH2" />
</session-factory>
</hibernate-configuration>
import org.h2.tools.Server;
import org.hibernate.SessionFactory;
import org.hibernate.boot.Metadata;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
public class HibernateUtil {
private static StandardServiceRegistry registry;
private static SessionFactory sessionFactory;
public static SessionFactory getSessionFactory() {
if (sessionFactory == null) {
try {
Server webServer = Server.createWebServer("-web","-webAllowOthers","-webPort","8082").start();
Server server = Server.createTcpServer("-tcp","-tcpAllowOthers","-tcpPort","9092").start();
// Create registry
registry = new StandardServiceRegistryBuilder().configure().build();
// Create MetadataSources
MetadataSources sources = new MetadataSources(registry);
// Create Metadata
Metadata metadata = sources.getMetadataBuilder().build();
// Create SessionFactory
sessionFactory = metadata.getSessionFactoryBuilder().build();
} catch (Exception e) {
e.printStackTrace();
if (registry != null) {
StandardServiceRegistryBuilder.destroy(registry);
}
}
}
return sessionFactory;
}
public static void shutdown() {
if (registry != null) {
StandardServiceRegistryBuilder.destroy(registry);
}
}
}
db2.datasource.driverClassName=org.h2.Driver
db2.datasource.url=jdbc:h2:tcp://10.250.31.42:9092/mem:test
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
db2.datasource.username=sa
db2.datasource.password=