Подтвердить что ты не робот

Использование спящего режима с встроенным дерби

Я хочу использовать спящий режим с встроенным дерби в автономном приложении , и у меня есть несколько вопросов:

  • Какие банки мне нужны?
  • Какова необходимая конфигурация спящего режима?
  • Есть ли другая необходимая конфигурация?
  • Есть ли какие-либо проблемы/ограничения с запросами/критериями?

если вы также можете предложить мне хороший учебник для этого подхода, который будет предпочтительнее, спасибо заранее.

4b9b3361

Ответ 1

Я использую Apache Derby с Hibernate для тестирования одного из моих классов модельных моделей (их эквиваленты, реализации хэш-кода, запросы и т.д.). MySQL используется как производственная база данных. Я выбираю Derby вместо HSQLDB, потому что у меня возникли некоторые несовместимости с Hibernate и HSQLDB, то есть с учетом моих сущностей (их имя, схема, ключи) и их Отношение Hibernate не могло создать мою схему базы данных в HSQLDB, хотя это могло быть с Derby. Тем не менее, может быть, я что-то испортил; также могут быть разрешены несовместимости.

В любом случае, вот что я использую в своих тестах (я изменил свой 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

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

  @Id
  public int id;

  @Basic
  public String data;
}

Test

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();