Hibernate +嵌入式数据库 - 设置

时间:2013-05-17 20:55:16

标签: java database hibernate

我已使用此配置使用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配置并将其设置为嵌入式数据库,这是可能的吗?

3 个答案:

答案 0 :(得分:4)

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

  1. H2
  2. SQLite
  3. HSQLDB

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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