很小
我尝试使用JPA/Hibernate/Postgres将数据插入Postgres。数据将从CSV文件中解析,然后应将数据保存到Postgres数据库中。持续数据的代码如下:
@Autowired
KundeRepository repo;
@Transactional
public void safe(Kunde kd) {
repo.save(kd);
}
public void safeAll(Iterable<Kunde> kt) {
repo.save(kt);
repo.flush();
}
实体外观如下
public class account implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
}
@ManyToOne
Kunde kunde;
@OneToMany
List<TransaktionsGruppe> gruppen;
@Entity
@Table(name = "kunde")
@NoArgsConstructor
public class Kunde implements Serializable {
public static final String kundennummerKey = "KUNDENNUMMER";
private static final long serialVersionUID = 1L;
@Id
@Getter
@Setter
private String id;
@OneToMany
List<Account> accounts;
@Entity
@Table(name = "transaktionsgruppe")
public class Transaktionsgruppe implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ManyToOne
Account acc;
private String bezeichnung;
现在,当我将集合传递给Safeall方法时,插入物确实很慢。特别是它似乎称为每插入的冬眠顺序。有没有办法加快事情的速度?
我的配置看起来如下:
datasource:
type: com.zaxxer.hikari.HikariDataSource
url: dburl
username: user
password: pw
hikari:
validation-timeout: 10000
health-check-properties: {"connectivityCheckTimeoutMs","1000"}
jpa:
show-sql: true
properties:
hibernate.cache.use_second_level_cache: false
hibernate.cache.use_query_cache: false
hibernate.generate_statistics: false
hibernate.jdbc.batch.size: 100
hibernate.order_inserts: true+
启用了当前Show-SQL。总体大约是60000个实体,需要超过20分钟。招待大小
您的safeAll()
方法未用@Transactional
注释,因此Spring打开并关闭列表中每个项目的交易。通过注释,Spring将打开并关闭整个列表的一次交易。