0 امتیاز
قبل در برنامه نویسی توسط (479 امتیاز)
برچسب گذاری دوباره قبل توسط

من قصد دارم از یک صف تعداد زیادی شی را وارد دیتابیس کنم. از jpa استفاده میکنم ولی خیلی سرعتش ورود اطلاعات پایینه و صف خیلی زود پر میشه. روش برای bulk insert در jpa داریم؟

database : sqlserver 2014

1 پاسخ

+1 امتیاز
قبل توسط (1.2هزار امتیاز)
انتخاب شده قبل توسط
 
بهترین پاسخ

تا جایی که من می دانم jpa امکان مستقیمی برای Bulk Insert ندارد. ولی شما می توانید flush کردن رکوردهای insert شده را به تاخیر بیندازید مثلا هر ۱۰۰۰ رکورد یک بار flush کنید. به این ترتیب سرعت خیلی بالاتر می رود. به کد زیر توجه بفرمایید:

public void bulkSave(Collection<MyEntity> entities) {
	final List<MyEntity> savedEntities = new ArrayList<MyEntity>(entities.size());
	int i = 0;
	for (MyEntity t : entities) {
		entityManager.persist(t);
		i++;
		if (i % 1000 == 0) {
			// Flush a batch of inserts and release memory.
			entityManager.flush();
			entityManager.clear();
		}
	}
}

اگر به دنبال یک راه حل حرفه ای تر هستید می توانید از apache camel استفاده کنید. در اینجا می توانید روش کار را مشاهده کنید. در این مثال ورودی camel از یک query آمده ولی شما می توانید ورودی را به queue مورد نظر خودتان متصل کنید.

 

سوالات مشابه

0 امتیاز
1 پاسخ 314 بازدید
سوال شده 10 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
0 امتیاز
1 پاسخ 466 بازدید
+1 امتیاز
1 پاسخ 1.1هزار بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط masoud shahhosseini_ (45 امتیاز)
+1 امتیاز
1 پاسخ 395 بازدید
سوال شده 6 سال قبل در برنامه نویسی توسط یوری (426 امتیاز)
0 امتیاز
3 پاسخ 875 بازدید
سوال شده 6 سال قبل در برنامه نویسی توسط یوری (426 امتیاز)
+1 امتیاز
1 پاسخ 591 بازدید
0 امتیاز
0 پاسخ 2.8هزار بازدید
0 امتیاز
0 پاسخ 967 بازدید
+1 امتیاز
1 پاسخ 750 بازدید
0 امتیاز
1 پاسخ 505 بازدید
سوال شده 8 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
...