1

私はSpringではなく、休止状態を使用していますが、ちょうどhibernate-generic-daoが見つかりました。 コンセプトはいいようですが、私はsetEntityManager()を呼び出していないので、私はそれを実行するとNPEを取得します。Springを使用しないEntityManagerの取得

Springを使用せずにEntityManagerを取得するにはどうすればよいですか?

+0

http://code.google.com/p/hibernate-generic-dao/issues/detail?id=77 – ripper234

答えて

1

これはテストコードです。 META-INFディレクトリ内のpersistence.xmlファイルを探します。それは、PostgreSQLデータベースと2つのエンティティクラスに接続された休止使用persistence.xmlの

EntityManagerFactory emf=Persistence.createEntityManagerFactory("test-unit"); 
EntityManager em=emf.createEntityManager(); 

ここ例です:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="1.0" 
      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/per\ 
sistence_1_0.xsd"> 
    <persistence-unit name="test-unit" transaction-type="RESOURCE_LOCAL"> 
    <class>com.example.package.Entity1</class> 
    <class>com.example.package.Entity2</class> 
    <properties> 
     <property name="hibernate.dialect" 
       value="org.hibernate.dialect.PostgreSQLDialect"/> 
     <property name="hibernate.connection.driver_class" 
       value="org.postgresql.Driver"/> 
     <property name="hibernate.connection.username" value="login"/> 
     <property name="hibernate.connection.password" value="password"/> 
     <property name="hibernate.connection.url" 
       value="jdbc:postgresql://dbserver.internal:5432/dbname"/> 
    </properties> 
    </persistence-unit> 
</persistence> 
+0

Amm ...私は永続性がありません.xmlファイル。 – ripper234

+0

作成する必要があります。それがあなたのエンティティクラスを定義するものです。 – JOTN

+0

いいえ、そうではありません。私はhibernate.cfg.xmlを使用していますが、あなたが投稿したもののようには見えません。私のテストは動作しています:) EntityManagerにこのXMLがなければならないと言っていますか?この場合、おそらくhibernate-generic-daoは私のためではありません。 – ripper234

1

休止状態4とH2データベースとEntityManagerを取得します。

import org.hibernate.boot.registry.StandardServiceRegistryBuilder; 
import org.hibernate.cfg.Configuration; 
import org.hibernate.jpa.internal.EntityManagerFactoryImpl; 
import org.hibernate.service.ServiceRegistry; 
import javax.persistence.EntityManager; 
import javax.persistence.EntityManagerFactory; 
import javax.persistence.spi.PersistenceUnitTransactionType; 

public class Main { 

    public static void main(String[] args) { 
     Configuration configuration = getConfiguration(); 

     StandardServiceRegistryBuilder serviceRegistryBuilder = new StandardServiceRegistryBuilder(); 
     serviceRegistryBuilder.applySettings(configuration.getProperties()); 
     ServiceRegistry serviceRegistry = serviceRegistryBuilder.build(); 

     EntityManagerFactory factory = new EntityManagerFactoryImpl(
       PersistenceUnitTransactionType.RESOURCE_LOCAL, true, null, configuration, serviceRegistry, null); 

     EntityManager em = factory.createEntityManager(); 
    } 

    private static Configuration getConfiguration() { 
     Configuration configuration = new Configuration(); 
     configuration.setProperty("hibernate.connection.driver_class", "org.h2.Driver"); 
     configuration.setProperty("hibernate.connection.url", "jdbc:h2:~/test"); 
     configuration.setProperty("hibernate.connection.pool_size", "1"); 
     configuration.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect"); 
     configuration.setProperty("hibernate.cache.provider_class", "org.hibernate.cache.internal.NoCachingRegionFactory"); 
     configuration.setProperty("hibernate.show_sql", "true"); 
     configuration.setProperty("hibernate.hbm2ddl.auto", "create"); 
     configuration.setProperty("hibernate.connection.autocommit", "false"); 
     configuration.addAnnotatedClass(RegionEntity.class); 
     return configuration; 
    } 
} 

依存性:

  1. com.h2database:H2:1.4.178
  2. org.hibernate:休止コア:4.3.5.Final
  3. org.hibernate:休止状態、のEntityManager :4.3.5。最終
関連する問題