5

我已经使用 Hibernate 和这个配置创建了 Java 应用程序:

<hibernate-configuration>
 <session-factory>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306     /bee</property>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property>
    <property name="connection.username">root</property>
    <property name="connection.password"/>
    <property name="hibernate.connection.charSet">UTF-8</property>
    <property name="hibernate.connection.characterEncoding">UTF-8</property>
    <property name="hibernate.connection.useUnicode">true</property>
    <mapping resource="DatabaseMapping.hbm.xml"/>
 </session-factory>
</hibernate-configuration>

当我使用 jdbc:mysql://localhost... 时一切正常,但现在我需要将数据库嵌入到我的应用程序中。我应该使用哪个数据库?我需要存储所有数据并在启动应用程序、更新数据、保存、删除后加载它。我使用 HQL 查询或 SQL 查询。

使数据库嵌入的最简单方法是什么?我不想更改我的查询。只更改休眠配置并将其设置为嵌入式数据库就可以了,可以吗?

4

3 回答 3

5

像 Hibernate 这样的 ORM 的优点之一是保护您免受 DB 差异的影响。您可以使用以下任何一种作为嵌入式数据库解决方案。只需更改 hibernate cfg 文件中的方言、驱动程序和 URL。

  1. H2
  2. SQLite
  3. 数据库
于 2013-05-17T21:04:12.210 回答
1

看看在嵌入式模式下使用H2数据库

<hibernate-configuration>
 <session-factory>
    <property name="hibernate.connection.driver_class">org.h2.Driver</property>
    <property name="hibernate.connection.url">jdbc:h2:~/test</property>
    <property name="hibernate.dialect">org.hibernate.dialect.H2Dialect</property>
    <property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property>
    <property name="connection.username">sa</property>
    <property name="connection.password"/>
    <property name="hibernate.connection.charSet">UTF-8</property>
    <property name="hibernate.connection.characterEncoding">UTF-8</property>
    <property name="hibernate.connection.useUnicode">true</property>
    <property name="hibernate.default_schema">PUBLIC</property>
    <mapping resource="DatabaseMapping.hbm.xml"/>
 </session-factory>
</hibernate-configuration>
于 2013-05-17T21:04:23.773 回答
0

如果您不想更改查询,请考虑使用 mysql-mxj(嵌入式 mysql)http://dev.mysql.com/doc/connector-mxj/en/connector-mxj.html

它不在积极开发中(感谢 Oracle)。但是完全可用,并且连接器是开源的。嵌入不同版本的mysql很简单,但是最新的mxj连接器嵌入了5.5.9

于 2013-05-17T21:10:24.373 回答