2013-03-06 153 views
1

我对Hibernate和JPA .Right我现在用的EntityManagerFactory实例来创建EntityManager的话,我有这个展开的EntityManager到会话中使用EntityManagerFactory和SessionFactory的区别?

entityManager = entityManagerFactory.createEntityManager(); 
session = entityManager.unwrap(Session.class); 

使用EntityManagerFacotry我们不需要创建Hibernateconfig.xml我们可以使用Persistence.xml.But我的问题是我不能Hibernate映射文件来映射实体类,当我使用Peristenece.xml

可以使用Hibernate映射文件映射实体类使用EntityManagerFactory?

+0

为什么要使用XML映射?使用注释。 – 2013-03-06 05:23:02

+1

你会得到清晰的想法。参考下面的链接。 http://stackoverflow.com/questions/5640778/hibernate-sessionfactory-vs-entitymanagerfactory – 2013-03-06 05:29:12

+0

我的需求是我需要使用没有注释的单个类动态映射不同的表。它可能只使用Hibernate映射文件使用session.save (entityName,object)。但我无法在EntityManagerFactory中使用..但它在sessionFactory中工作 – user1679378 2013-03-06 05:37:31

回答

1

简短回答是肯定的,你可以在JPA中使用hibernate.cfg.xml。假设你在创建映射时直接使用hibernate。但是,你为什么使用Session?你不使用EntityManager#persist()?或#createQuery()? (顺便说一句,EntityManager是JPA,会话是休眠)

+0

我在persistence.xml中配置了hibernate-cfg.xml,在hibernate-cfg.xml中配置了hibernate-hbm.xml.But部署此代码我正在获取Hibernate映射异常。 – user1679378 2013-03-06 05:50:22

1

这很奇怪,你仍然想使用休眠会话时使用jpa。但对于你的问题,是的,你可以做到这一点。这是关于这个的另一个问题:How to load a Hibernate 'xxx.hbm.cfg' file in a JPA 2.0 project?。还有一个标签,它可以导入hbm.xml文件。

+0

我们是否需要为该类使用@Entity注释? – user1679378 2013-03-06 06:10:28

+0

实际上,如果您导入hbm.xml,则不需要使用@Entity注释域类。自从你提到这个以后,我还强烈建议你只用实体注释这个类并删除hbm.xml文件,CUZ更方便,可以更好地进行进一步的工作。 – OQJF 2013-03-06 06:20:24

+0

我的要求是我需要使用没有注释的单个类动态地映射不同的表。它不可能使用注释。 – user1679378 2013-03-06 06:21:55