私はSpringではなく、休止状態を使用していますが、ちょうどhibernate-generic-daoが見つかりました。 コンセプトはいいようですが、私はsetEntityManager()を呼び出していないので、私はそれを実行するとNPEを取得します。Springを使用しないEntityManagerの取得
Springを使用せずにEntityManagerを取得するにはどうすればよいですか?
私はSpringではなく、休止状態を使用していますが、ちょうどhibernate-generic-daoが見つかりました。 コンセプトはいいようですが、私はsetEntityManager()を呼び出していないので、私はそれを実行するとNPEを取得します。Springを使用しないEntityManagerの取得
Springを使用せずにEntityManagerを取得するにはどうすればよいですか?
これはテストコードです。 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>
休止状態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;
}
}
依存性:
http://code.google.com/p/hibernate-generic-dao/issues/detail?id=77 – ripper234