【问题标题】:Hibernate + embedded database - setupHibernate + 嵌入式数据库 - 设置
【发布时间】:2013-05-17 20:55:16
【问题描述】:

我已经使用 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 查询。

嵌入数据库的最简单方法是什么?我不想更改我的查询。只修改hibernate配置,设置成嵌入式数据库就好了,可以吗?

【问题讨论】:

    标签: java database hibernate


    【解决方案1】:

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

    1. H2
    2. SQLite
    3. HSQLDB

    【讨论】:

    • 我无法让 Hibernate 使用 SQLite,这是我下一个项目的首选数据库。有没有人能够让这种组合发挥作用?如果是这样,请发布一系列步骤以执行此操作。同时,我将尝试让 H2 与 Hibernate 一起工作。谢谢!
    • 据我了解,休眠不再支持 sqlite。我花了很多时间试图让它们工作,但没有成功。
    【解决方案2】:

    看看在嵌入式模式下使用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>
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      猜你喜欢
      • 2018-05-15
      • 1970-01-01
      • 2013-02-03
      • 1970-01-01
      • 1970-01-01
      • 2012-01-21
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      相关资源
      最近更新 更多