JPA
saveメソッドを呼び出せば呼び出すほど遅くなる
public void entitySave(List<Entity> eList) {
for (Entity e : List<Entity> eList) {
entityRepository.save(e);
}
}
上記のように大量のデータをinsertする時、処理速度がどんどん遅くなる
トランザクションを開始していないから遅かった
@Transactionalをつけてあげれば解決
@Transactional
public void entitySave(List<Entity> eList) {
for (Entity e : List<Entity> eList) {
entityRepository.save(e);
}
}
Error creating bean with name 'entityManagerFactory'
ERROR 7184 --- [ restartedMain] o.s.boot.SpringApplication : Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: No identifier specified for entity: demo.user.User
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1745) ~[spring-beans-5.1.3.RELEASE.jar:5.1.3.RELEASE]
No identifier specified for entity: demo.user.User
entityが識別できないよ!と言われている
エラー対象であるUser.javaは@Entityをつけているにもかかわらず@Idがなかったことが原因
User.java
@Entity
@Data
public class User {
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "id")
private Integer id;
}
@Id をつけてあげると解決
User.java
// org.springframework.data.annotation.Id ← これではない!
import javax.persistence.Id;
@Entity
@Data
public class User {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "id")
private Integer id;
}