标签: entitymanager

LocalContainerEntityManagerFactoryBean和LocalEntityManagerFactoryBean有什么区别?

任何人都可以解释Spring Framework的LocalContainerEntityManagerFactoryBeanLocalEntityManagerFactoryBean之间的区别是什么?

spring hibernate jpa entitymanager spring-orm

39
推荐指数
5
解决办法
2万
查看次数

Symfony2:如何获得一个标有"EDIT"ACL权限的类型的所有实体?

有人能告诉我如何获得一个标有"编辑"ACL权限的类型的所有实体吗?

我想用Doctrine EntityManager构建一个查询.

acl doctrine entitymanager symfony

36
推荐指数
1
解决办法
4692
查看次数

在Doctrine 2.0实体中使用EntityManager

我有2个实体:Country(id,name)和Mapping(id,object,internalId,externalId).国家和地图未与关联相关联(因为"映射"不仅包含国家/地区的行).我需要使用以下条件获取国家/地区的外部ID:

  • country.id = mapping.internalId
  • mapping.object = 'country'

所以我计划在Country中添加函数getExternalId()

function getExternalId() {
    $em = Registry::getEntityManager();

    $mapping = $em->getRepository('Mapping')->findOneBy(array(
        'object'     => 'country',
        'internalId' => $this->getId()
    ));

    return !empty($mapping) ? $mapping->getExternalId() : false;
}
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 在实体中使用EntityManager是一种好习惯吗?如果不是,请解释如何在我的情况下获得外部身份证?
  2. 也许可以使用yaml文件关联Country和Mapping?

提前致谢!

entitymanager doctrine-orm

33
推荐指数
3
解决办法
3万
查看次数

获取EntityManager的不同方法

我在创建EntityManager时看到的常用习惯是这样的:

public class BaseDao {
    private static final String PERSISTENCE_UNIT_NAME = "Employee";

    EntityManagerFactory factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);

    public EntityManager getEntityManager() {
      return factory.createEntityManager();
    } 
}
Run Code Online (Sandbox Code Playgroud)

然后就像这样使用:

Employee emp = new Employee();
emp.setName("Joe M");
getEntityManager().persist(emp);
Run Code Online (Sandbox Code Playgroud)

问题是为什么不这样做:

public class BaseDao{
    private static final String PERSISTENCE_UNIT_NAME = "Employee";
    EntityManagerFactory factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
    private EntityManager entityManager = null;


public void setEntityManger() {
    EntityManagerFactory factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
    this.entityManager = factory.createEntityManager();

    }

    public EntityManager getEntityManager() {
        return this.entityManager;
    }
}
Run Code Online (Sandbox Code Playgroud)

换句话说,是否需要始终通过factory.createEntityManager()获取实体管理器?或者它可以创建为实例(甚至静态)变量并像这样检索?

为了澄清,我在谈论一个不使用EJB或Spring容器的环境.

谢谢.

java jpa entitymanager

31
推荐指数
1
解决办法
7万
查看次数

如何模拟EntityManager?

我需要模拟实体管理器来使测试服务层(在我的情况下是一个会话外观)独立于底层(在我的例子中是实体管理器).

那么我怎么能做到这一点?我应该使用dbunit吗?我需要easy/j(模拟)吗?

java unit-testing jpa mocking entitymanager

29
推荐指数
1
解决办法
3万
查看次数

Spring + Hibernate + JPA

到目前为止,我有一个具有持久性的Spring应用程序.但是现在我想使用Hibernate和JPA来完成我的所有数据库活动.我想使用entitymanager来做这件事.

我一直在阅读有关此问题的许多文档和教程,我一直对是否需要persistence.xml文件感到困惑.此外,我也对如何设置applicationContext.xml文件感到困惑.

有没有人知道一个好的网站,以便使用EntityManager学习Spring + Hibernate + JPA +?

java spring hibernate jpa entitymanager

28
推荐指数
1
解决办法
1万
查看次数

我应该多久创建一个EntityManager?

我有一个EntityManagerFactory我可以创建一个(或多个)EntityManager实例.我正在使用Servlet环境,并且我有一个EntityManagerFactory连接到servlet(通过servlet上下文),它在servlet的生命周期内共享(因此,对于所有用户).

我可以做以下其中一项:

  • 为我的servlet的生命周期创建一个EntityManager(例如,在所有用户之间共享)
  • 为每个用户创建一个(因此每个用户在HttpSession中获得自己的)
  • 为每个HTTP请求创建一个(例如,通过实例化一个新请求并在doGet方法结束时关闭它)

哪个最合适?创建EntityManager的成本是否显着?如果我做一个共享的EntityManager,是否有一个事务范围(即独立用户之间的更新可以提交其他更改)?

java jpa entitymanager

27
推荐指数
1
解决办法
7413
查看次数

EntityManager刷新

我有使用JPA的Web应用程序.这个实体管理器保留了大量的实体,突然间我从另一侧更新了数据库.我使用MySQL,我使用PhpMyAdmin并更改一些行.

如何告诉实体经理重新同步,例如忘记缓存中的所有entite?

我知道有refresh(Object)方法,但是有什么可能做什么refreshAll()或什么导致这个?

这肯定是昂贵的操作,但如果必须这样做.

java jpa entitymanager

27
推荐指数
2
解决办法
4万
查看次数

如何在Spring中的共享EntityManager上手动启动事务?

我有一个LocalContainerEntityManagerFactoryBeanEntityManager实例.

要快速删除整个表的内容,我想运行以下代码:

@Service
public class DatabaseService {
    @Autowired
    private EntityManager em;

    @Transactional
    public void clear() {
        em.createNativeQuery("TRUNCATE TABLE MyTable").executeUpdate();
    }
}
Run Code Online (Sandbox Code Playgroud)

结果:

ERROR org.springframework.integration.handler.LoggingHandler: javax.persistence.TransactionRequiredException: Executing an update/delete query
    at org.hibernate.jpa.spi.AbstractQueryImpl.executeUpdate(AbstractQueryImpl.java:71)
    at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
    at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:708)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
    at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:644)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:65)
    at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
Run Code Online (Sandbox Code Playgroud)

如果我做了这个改变:

public …
Run Code Online (Sandbox Code Playgroud)

java spring entitymanager spring-data-jpa

26
推荐指数
3
解决办法
3万
查看次数

应该何时创建/打开EntityManagerFactory实例?

好的,我阅读了一些文章/示例如何在单例中编写实体管理器工厂.

其中一个对我来说最容易理解:

http://javanotepad.blogspot.com/2007/05/jpa-entitymanagerfactory-in-web.html

我了解到EntityManagerFactory(EMF)应该只在应用程序范围内创建一次.

并确保在使用后关闭EMF(?)

所以我编写了EMF helper类来使用的业务方法:

public class EmProvider {

    private static final String DB_PU = "KogaAlphaPU";

    public static final boolean DEBUG = true;

    private static final EmProvider singleton = new EmProvider();

    private EntityManagerFactory emf;

    private EmProvider() {}

    public static EmProvider getInstance() {
        return singleton;
    }


    public EntityManagerFactory getEntityManagerFactory() {
        if(emf == null) {
            emf = Persistence.createEntityManagerFactory(DB_PU);
        }
        if(DEBUG) {
            System.out.println("factory created on: " + new Date());
        }
        return emf;
    }

    public void closeEmf() {
        if(emf.isOpen() || emf …
Run Code Online (Sandbox Code Playgroud)

java singleton jpa entitymanager

24
推荐指数
1
解决办法
3万
查看次数