当前位置: 首页 > 面试题库 >

将hibernate与嵌入式derby一起使用

徐嘉勋
2023-03-14
问题内容

我想在 独立应用程序* 中将 hibernate嵌入式derby 一起使用,并且我有一些问题: *

  1. 我需要什么jar?
  2. 必要的hibernate配置是什么?
  3. 还有其他必要的配置吗?
  4. 查询/条件是否有任何问题/限制?

如果您还可以建议我一些适合这种方法的好教程,那将是可取的,谢谢。


问题答案:

我将Apache Derby与Hibernate一起用于测试项目的一个模型类(它们的 equalshashCode
实现,查询等)。MySQL被用作生产数据库。我选择Derby而不是HSQLDB,因为我经历了与Hibernate和HSQLDB的一些不兼容,这意味着,鉴于我的实体(它们的名称,架构,键)及其关系,Hibernate无法在HSQLDB中创建我的数据库架构,而德比
就是说,也许我搞砸了;不兼容问题也可以得到解决。

无论如何,这就是我在测试中使用的东西(我已经修改了我的代码,pom.xml以便将Derby包含为 运行时
依赖项并运行一个测试,以确保它可以正常工作)。

pom.xml

<dependencies>                                      
  ...                               
  <dependency>                                      
    <groupId>org.hibernate</groupId>                
    <artifactId>hibernate-entitymanager</artifactId>
    <version>3.6.8.Final</version>                  
  </dependency>                                     
  <dependency>                                      
    <groupId>org.apache.derby</groupId>             
    <artifactId>derby</artifactId>                  
    <version>10.8.2.2</version>                     
    <scope>runtime</scope>                          
  </dependency>                                     
  <!-- 
     an slf4j implementation is needed by
     hibernate so that it could log its *stuff*
  -->
  <dependency>                                      
    <groupId>org.slf4j</groupId>                    
    <artifactId>slf4j-simple</artifactId>           
    <version>1.6.4</version>                        
    <scope>runtime</scope>                          
  </dependency>                                     
  ...                             
</dependencies>

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
  version="2.0">
  <persistence-unit name="test">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <class>Test</class>
    <properties>
      <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver"/>
      <!--
        if you don't have a database already created
        append ;create=true to end of the jdbc url
      -->
      <property name="javax.persistence.jdbc.url" value="jdbc:derby:test"/>
      <property name="javax.persistence.jdbc.user" value="root"/>
      <property name="javax.persistence.jdbc.password" value="root"/>
      <!--  
        if you just created the database, maybe
        you want hibernate to create a schema for you

        <property name="hibernate.hbm2ddl.auto" value="create"/> 
      -->
    </properties>
  </persistence-unit>
</persistence>

Test 实体

@Entity
@Table(name = "test")
public class Test {

  @Id
  public int id;

  @Basic
  public String data;
}

测试

EntityManagerFactory emf = Persistence.createEntityManagerFactory("test");  
EntityManager em = emf.createEntityManager();                               
EntityTransaction tx = em.getTransaction();

Test test = em.find(Test.class, 1);                                         
if (test == null) {                                                         
  test = new Test();                                                        
  test.id = 1;                                                              
  test.data = "a";

  tx.begin();                                                               
  em.persist(test);                                                         
  tx.commit();                                                              
}

System.out.format("Test{id=%s, data=%s}\n", test.id, test.data);

em.close();                                                                 
emf.close();


 类似资料:
  • 我正在尝试将文件的绝对值传递给类路径的read函数。 如果我将绝对路径与类路径一起传递,它就会很好地工作。但当我传递嵌入式表达式时,它不起作用 我的代码如下 给定url appServer给定参数creationMethod=“swagger_first”和路径“/integration/rest/rad” 和头X-CSRF-TOKEN=csrfToken*cookie JSESSIONID=JS

  • 我知道以前也有人问过类似的问题并回答过。但我试过了前面的答案的解决方案,但它们并不奏效。我已经尽我所能尝试了,希望有人能为我面临的问题提供一些启示。 在Spring Boot应用程序中配置嵌入式Derby 这是我的代码, 应用程序.属性 ApachederByExample.java 我只是试图在应用程序中使用Apache Derby嵌入式数据库,并且使用Maven中定义的依赖项,我不知道为什么仍

  • 问题内容: 我在理解Hibernate如何处理泛型时遇到一些麻烦,并且想知道实现我的目标的最佳方法。 给定一个简单的通用实体: 在进行hibernate初始化时,出现异常: 我几乎可以肯定,这是因为我没有给hibernate一些可能的限制条件。我知道你可以指定的东西,如上面的注释,但你失去使用泛型的灵活性。我可以使用注解限制可接受的泛型的范围吗?例如:如果我想要class ,该类从抽象类继承而来,

  • 如何将Restrictions.in与列表字段一起使用? 这是我的模型: 我尝试只获取具有某些功能的组: 但这会返回一个错误: 引起原因:org.hibernate.exception.GenericJDBCExc0019:在索引:: 1缺少IN或OUT参数org.hibernate.exception.internal.在org.hibernate.engine.jdbc.spi.SqlExce

  • 我的web应用程序(将部署在tomcat上)需要一个嵌入式数据库来存储临时用户数据,以便更快地检索。我选择Apache Embedded Derby是因为它很容易嵌入到web应用程序中,而且是一个纯Java DB。 我还实现了连接池来检索连接。我在这里面临着两个关键的问题(显示塞子)。首先,我的应用程序一次不能有两个以上的活动连接。所以,我的应用程序挂断了。 其次,我不断发现另一个应用程序已经启动

  • 在谷歌搜索了很多之后,现在感到困惑和沮丧。 我正在将一个应用程序从Hibernate 3升级到4。这在使用dtd 3.0时效果很好,但现在需要使用4.0 xsd,而这正是一切都要基于apex的地方! 该应用程序使用hbm.xml文件来配置每个实体,没有任何注释。 找到hbm文件的示例将非常有用,但即使是hibernate 4的教程也只使用3.0 dtd! 我正在使用以下内容 使用它,我得到了一个长