Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
ghsby
o2oa
提交
14b09868
o2oa
项目概览
ghsby
/
o2oa
落后 Fork 源项目 2880 个版本
Fork自
浙江兰德纵横网络技术股份有限公司 / o2oa
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
o2oa
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
14b09868
编写于
8月 26, 2020
作者:
Z
zhourui
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
entityManager优化
上级
e753e163
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
10 addition
and
10 deletion
+10
-10
o2server/x_console/src/main/java/com/x/server/console/action/RestoreData.java
...rc/main/java/com/x/server/console/action/RestoreData.java
+10
-10
未找到文件。
o2server/x_console/src/main/java/com/x/server/console/action/RestoreData.java
浏览文件 @
14b09868
...
...
@@ -15,6 +15,7 @@ import java.util.stream.Stream;
import
javax.persistence.EntityManager
;
import
javax.persistence.EntityManagerFactory
;
import
javax.persistence.FlushModeType
;
import
javax.persistence.criteria.CriteriaBuilder
;
import
javax.persistence.criteria.CriteriaQuery
;
import
javax.persistence.criteria.Root
;
...
...
@@ -99,8 +100,8 @@ public class RestoreData {
AtomicLong
total
=
new
AtomicLong
(
0
);
stream
.
forEach
(
className
->
{
String
nameOfThread
=
Thread
.
currentThread
().
getName
();
Thread
.
currentThread
().
setName
(
RestoreData
.
class
.
getName
()
+
":"
+
className
);
try
{
Thread
.
currentThread
().
setName
(
RestoreData
.
class
.
getName
()
+
":"
+
className
);
@SuppressWarnings
(
"unchecked"
)
Class
<
JpaObject
>
cls
=
(
Class
<
JpaObject
>)
Class
.
forName
(
className
);
logger
.
print
(
"restore data({}/{}): {}."
,
idx
.
getAndAdd
(
1
),
classNames
.
size
(),
cls
.
getName
());
...
...
@@ -135,6 +136,8 @@ public class RestoreData {
EntityManagerFactory
emf
=
OpenJPAPersistence
.
createEntityManagerFactory
(
cls
.
getName
(),
xml
.
getFileName
().
toString
(),
PersistenceXmlHelper
.
properties
(
cls
.
getName
(),
Config
.
slice
().
getEnable
()));
EntityManager
em
=
emf
.
createEntityManager
();
em
.
setFlushMode
(
FlushModeType
.
COMMIT
);
AtomicLong
count
=
new
AtomicLong
(
0
);
AtomicInteger
batch
=
new
AtomicInteger
(
1
);
try
{
...
...
@@ -143,13 +146,12 @@ public class RestoreData {
throw
new
ExceptionDirectoryNotExist
(
directory
);
}
StorageMappings
storageMappings
=
Config
.
storageMappings
();
this
.
clean
(
cls
,
emf
,
storageMappings
,
cls
.
getAnnotation
(
ContainerEntity
.
class
));
this
.
clean
(
cls
,
em
,
storageMappings
,
cls
.
getAnnotation
(
ContainerEntity
.
class
));
em
.
clear
();
List
<
Path
>
paths
=
this
.
list
(
directory
);
paths
.
stream
().
forEach
Ordered
(
o
->
{
paths
.
stream
().
forEach
(
o
->
{
logger
.
print
(
"restore {}/{} part of data:{}."
,
batch
.
getAndAdd
(
1
),
paths
.
size
(),
cls
.
getName
());
EntityManager
em
=
null
;
try
{
em
=
emf
.
createEntityManager
();
em
.
getTransaction
().
begin
();
JsonArray
raws
=
this
.
convert
(
o
);
for
(
JsonElement
json
:
raws
)
{
...
...
@@ -165,14 +167,13 @@ public class RestoreData {
em
.
clear
();
}
catch
(
Exception
e
)
{
logger
.
error
(
new
Exception
(
String
.
format
(
"restore error with file:%s."
,
o
.
toString
()),
e
));
}
finally
{
em
.
close
();
}
});
logger
.
print
(
"restore data: {} completed, count: {}."
,
cls
.
getName
(),
count
.
intValue
());
}
catch
(
Exception
e
)
{
logger
.
error
(
e
);
}
finally
{
em
.
close
();
emf
.
close
();
}
return
count
.
longValue
();
...
...
@@ -219,15 +220,13 @@ public class RestoreData {
return
jsonElement
.
getAsJsonArray
();
}
private
<
T
>
void
clean
(
Class
<
T
>
cls
,
EntityManager
Factory
emf
,
StorageMappings
storageMappings
,
private
<
T
>
void
clean
(
Class
<
T
>
cls
,
EntityManager
em
,
StorageMappings
storageMappings
,
ContainerEntity
containerEntity
)
throws
Exception
{
EntityManager
em
=
emf
.
createEntityManager
();
List
<
T
>
list
=
null
;
do
{
if
(
ListTools
.
isNotEmpty
(
list
))
{
em
.
getTransaction
().
begin
();
for
(
T
t
:
list
)
{
em
.
remove
(
t
);
if
(
StorageObject
.
class
.
isAssignableFrom
(
cls
))
{
StorageObject
so
=
(
StorageObject
)
t
;
@SuppressWarnings
(
"unchecked"
)
...
...
@@ -236,6 +235,7 @@ public class RestoreData {
so
.
deleteContent
(
mapping
);
}
}
em
.
remove
(
t
);
}
em
.
getTransaction
().
commit
();
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录