You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by da...@apache.org on 2007/04/25 03:36:22 UTC
svn commit: r532164 -
/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/cmp/jpa/JpaCmpEngine.java
Author: dain
Date: Tue Apr 24 18:36:21 2007
New Revision: 532164
URL: http://svn.apache.org/viewvc?view=rev&rev=532164
Log:
Acquire the entity manager inside of the transaction
Modified:
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/cmp/jpa/JpaCmpEngine.java
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/cmp/jpa/JpaCmpEngine.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/cmp/jpa/JpaCmpEngine.java?view=diff&rev=532164&r1=532163&r2=532164
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/cmp/jpa/JpaCmpEngine.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/cmp/jpa/JpaCmpEngine.java Tue Apr 24 18:36:21 2007
@@ -129,26 +129,26 @@
}
public Object createBean(EntityBean bean, ThreadContext callContext) throws CreateException {
- CoreDeploymentInfo deploymentInfo = callContext.getDeploymentInfo();
- EntityManager entityManager = getEntityManager(deploymentInfo);
-
// TODO verify that extract primary key requires a flush followed by a merge
boolean startedTx = startTransaction("persist");
creating.get().add(bean);
try {
+ CoreDeploymentInfo deploymentInfo = callContext.getDeploymentInfo();
+ EntityManager entityManager = getEntityManager(deploymentInfo);
+
entityManager.persist(bean);
entityManager.flush();
bean = entityManager.merge(bean);
+
+ // extract the primary key from the bean
+ KeyGenerator kg = deploymentInfo.getKeyGenerator();
+ Object primaryKey = kg.getPrimaryKey(bean);
+
+ return primaryKey;
} finally {
creating.get().remove(bean);
commitTransaction(startedTx, "persist");
}
-
- // extract the primary key from the bean
- KeyGenerator kg = deploymentInfo.getKeyGenerator();
- Object primaryKey = kg.getPrimaryKey(bean);
-
- return primaryKey;
}
public Object loadBean(ThreadContext callContext, Object primaryKey) {
@@ -156,6 +156,7 @@
try {
CoreDeploymentInfo deploymentInfo = callContext.getDeploymentInfo();
Class<?> beanClass = deploymentInfo.getCmpImplClass();
+
EntityManager entityManager = getEntityManager(deploymentInfo);
Object bean = entityManager.find(beanClass, primaryKey);
return bean;
@@ -193,26 +194,26 @@
}
public List<Object> queryBeans(ThreadContext callContext, Method queryMethod, Object[] args) throws FinderException {
- CoreDeploymentInfo deploymentInfo = callContext.getDeploymentInfo();
- EntityManager entityManager = getEntityManager(deploymentInfo);
+ boolean startedTx = startTransaction("query");
+ try {
+ CoreDeploymentInfo deploymentInfo = callContext.getDeploymentInfo();
+ EntityManager entityManager = getEntityManager(deploymentInfo);
- StringBuilder queryName = new StringBuilder();
- queryName.append(deploymentInfo.getAbstractSchemaName()).append(".").append(queryMethod.getName());
- String shortName = queryName.toString();
- if (queryMethod.getParameterTypes().length > 0) {
- queryName.append('(');
- boolean first = true;
- for (Class<?> parameterType : queryMethod.getParameterTypes()) {
- if (!first) queryName.append(',');
- queryName.append(parameterType.getCanonicalName());
- first = false;
- }
- queryName.append(')');
+ StringBuilder queryName = new StringBuilder();
+ queryName.append(deploymentInfo.getAbstractSchemaName()).append(".").append(queryMethod.getName());
+ String shortName = queryName.toString();
+ if (queryMethod.getParameterTypes().length > 0) {
+ queryName.append('(');
+ boolean first = true;
+ for (Class<?> parameterType : queryMethod.getParameterTypes()) {
+ if (!first) queryName.append(',');
+ queryName.append(parameterType.getCanonicalName());
+ first = false;
+ }
+ queryName.append(')');
- }
+ }
- boolean startedTx = startTransaction("query");
- try {
String fullName = queryName.toString();
Query query = createNamedQuery(entityManager, fullName);
if (query == null) {
@@ -228,10 +229,10 @@
}
public List<Object> queryBeans(CoreDeploymentInfo deploymentInfo, String signature, Object[] args) throws FinderException {
- EntityManager entityManager = getEntityManager(deploymentInfo);
-
boolean startedTx = startTransaction("query");
try {
+ EntityManager entityManager = getEntityManager(deploymentInfo);
+
Query query = createNamedQuery(entityManager, signature);
if (query == null) {
int parenIndex = signature.indexOf('(');