Eclipse Hibernate:如何在Hibernate中配置EntityManager?

Eclipse Hibernate:如何在Hibernate中配置EntityManager?,eclipse,hibernate,jpa,persistence,jpa-2.0,Eclipse,Hibernate,Jpa,Persistence,Jpa 2.0,我使用JBoss向Eclipse提供的“hibernate工具”创建了一个hibernate项目。 生成实体(POJO),然后生成DAO 例如: @Entity @Table(name = "area", catalog = "project_schema", uniqueConstraints = @UniqueConstraint(columnNames = "area")) public class Area implements java.io.Serializable { p

我使用JBoss向Eclipse提供的“hibernate工具”创建了一个hibernate项目。 生成实体(POJO),然后生成DAO

例如:

@Entity
@Table(name = "area", catalog = "project_schema", uniqueConstraints = @UniqueConstraint(columnNames = "area"))
public class Area implements java.io.Serializable {

    private Integer id;
    private String area;

    public Area() {
    }

    public Area(String area) {
        this.area = area;
    }

    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "id", unique = true, nullable = false)
    public Integer getId() {
        return this.id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    @Column(name = "area", unique = true, nullable = false, length = 45)
    public String getArea() {
        return this.area;
    }

    public void setArea(String area) {
        this.area = area;
    }

}
然后是相应的DAO类(也由Hibernate工具生成):

但是当我尝试调用
AreaHome.persist()
时,它会启动一个异常
'NullPointerException'

我使用hibernate.cfg.xml配置了我的项目,但一切正常:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.password"><password></property>
        <property name="hibernate.connection.url">jdbc:mysql://<hostname>:3306/<schema></property>
        <property name="hibernate.connection.username">root</property>
        <!-- <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

        <!-- SQL -->
        <property name="hibernate.format_sql">true</property>
        <property name="hibernate.show_sql">true</property>
        <!-- C3P0 -->
        <property name="hibernate.c3p0.acquire_increment">2</property>
        <property name="hibernate.c3p0.max_size">20</property>
        <property name="hibernate.c3p0.min_size">5</property>
        <property name="hibernate.c3p0.timeout">180</property>
        <property name="hibernate.c3p0.idle_test_period">100</property>
        <!-- Classes -->
        <mapping class="com.suaparte.pojo.Area" />
    </session-factory>
</hibernate-configuration>
但是我想使用Hibernate工具生成的DAO,因为它们有EntityManager(应该是注入的,但显然不是)

我该怎么办?有什么想法吗?
很抱歉问了这么长的问题,但我想非常清楚我的问题。

事实上,您需要实现EntityManagerFactory

创建驻留在META-INF文件夹中的persistence.xml文件

请看一个例子

在执行创建EntityManagerFactory和EntityManager的命令后,然后:

EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("JavaStackOver");
EntityManager entityManager = entityManagerFactory.createEntityManager();
解决依赖关系,我使用maven:

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-core</artifactId>
  <version>4.0.1.Final</version>
</dependency>
<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-entitymanager</artifactId>
  <version>4.0.1.Final</version>
</dependency>
<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-annotations</artifactId>
  <version>3.5.6-Final</version>
</dependency>

org.hibernate
冬眠核心
4.0.1.最终版本
org.hibernate
休眠实体管理器
4.0.1.最终版本
org.hibernate
休眠注释
3.5.6-最终版本
在你的Dao上注入JPA并完成

使用EntityManager的优点是可以选择在futuro中更改休眠。否则,您可以使用该会话。

我建议阅读。这是相当好的,并有一些很好的例子。您可能感兴趣的部分如下:
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("JavaStackOver");
EntityManager entityManager = entityManagerFactory.createEntityManager();
<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-core</artifactId>
  <version>4.0.1.Final</version>
</dependency>
<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-entitymanager</artifactId>
  <version>4.0.1.Final</version>
</dependency>
<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-annotations</artifactId>
  <version>3.5.6-Final</version>
</dependency>