Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Hibernate/JPA中加速持久化/保存_Java_Mysql_Spring_Hibernate_Jpa - Fatal编程技术网

Java 在Hibernate/JPA中加速持久化/保存

Java 在Hibernate/JPA中加速持久化/保存,java,mysql,spring,hibernate,jpa,Java,Mysql,Spring,Hibernate,Jpa,我在Spring/Java/Hibernate/Java/MySQL中有一个后端应用程序,我正在使用SessionFactory。我有一个具有多个父子关系的表/实体类,我调用parentDao.persist(object)保存,该操作需要很长时间才能完成,该对象还包含多个子对象,因此在该调用中会持久化父/子对象 我的表格/实体是: 事件实体 private Integer id; private String entityId; private String eventTitle; priva

我在Spring/Java/Hibernate/Java/MySQL中有一个后端应用程序,我正在使用SessionFactory。我有一个具有多个父子关系的表/实体类,我调用parentDao.persist(object)保存,该操作需要很长时间才能完成,该对象还包含多个子对象,因此在该调用中会持久化父/子对象

我的表格/实体是:

事件实体

private Integer id;
private String entityId;
private String eventTitle;
private UserEntity organizer;
private BusinessEntity business;
private LocationEntity location;
//child objects
private List<EventsUserEntity> eventsUsers;
private List<FilterMappingEntity> filterMapping;
private List<EventMediaMapEntity> mediaMaps;
@OneToMany(mappedBy="event",fetch=FetchType.LAZY,cascade={CascadeType.PERSIST,CascadeType.MERGE},orphanRemoval=true)
public List<EventMediaMapEntity> getMediaMaps() {
return mediaMaps;}
@OneToMany(mappedBy="event",fetch=FetchType.LAZY,cascade= {CascadeType.PERSIST, CascadeType.MERGE})
public List<FilterMappingEntity> getFilterMapping() {
return filterMapping;}
@OneToMany(mappedBy = "event", cascade = CascadeType.PERSIST,fetch = FetchType.LAZY)
public List<EventsUserEntity> getEventsUsers() {
return eventsUsers;
}
@ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
public UserEntity getOrganizer() {
return organizer;
}
@OneToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE}, fetch = FetchType.LAZY)
public LocationEntity getLocation() {
return location;
}
@ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
public BusinessEntity getBusiness() {
return business;
}
私有整数id;
私有字符串entityId;
私有字符串事件标题;
私人用户实体组织者;
私营企业;
私人场所实体场所;
//子对象
私人列表事件用户;
私有列表过滤器映射;
私有列表媒体地图;
@OneToMany(mappedBy=“event”,fetch=FetchType.LAZY,cascade={CascadeType.PERSIST,CascadeType.MERGE},orphanRemoving=true)
公共列表getMediaMaps(){
返回mediaMaps;}
@OneToMany(mappedBy=“event”,fetch=FetchType.LAZY,cascade={CascadeType.PERSIST,CascadeType.MERGE})
公共列表getFilterMapping(){
返回筛选器映射;}
@OneToMany(mappedBy=“event”,cascade=CascadeType.PERSIST,fetch=FetchType.LAZY)
公共列表getEventsUsers(){
返回事件用户;
}
@manytone(cascade=CascadeType.PERSIST,fetch=FetchType.LAZY)
公共用户实体getOrganizer(){
返回组织者;
}
@OneToOne(cascade={CascadeType.PERSIST,CascadeType.MERGE},fetch=FetchType.LAZY)
公共位置实体getLocation(){
返回位置;
}
@manytone(cascade=CascadeType.PERSIST,fetch=FetchType.LAZY)
公共业务实体getBusiness(){
退货业务;
}
子类在服务调用期间填充,并由父
DAO
持久化。所有其他外键对象都是持久化对象(即从数据库检索到的对象),除了
位置
对象,它与
事件
对象一起持久化。 但是,当我持久化
事件
实体时,它需要很长时间,有时大约需要1分钟。
请建议我加快持续经营

这很可能不是由persist操作本身引起的。检查是否存在数据库连接问题、网络问题或数据库中的锁。或者你选择了一个非常慢的ID生成算法。启用SQL日志记录以了解发生了什么。感谢您的回复。我也启用了SQL日志记录,它在
insert
语句之前进行了太多的
select
查询。如何避免这种情况?ID生成是通过@GeneratedValue(strategy=GenerationType.AUTO)实现的。我在本地尝试了这个,所以我们可以假设没有网络问题。@JBNizet我在本地尝试了这个,所以我们可以假设没有网络问题。数据库中的tx_隔离设置为
可重复读取