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 پاسخ 200 بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
0 امتیاز
1 پاسخ 294 بازدید
+1 امتیاز
1 پاسخ 899 بازدید
سوال شده 4 سال قبل در برنامه نویسی توسط masoud shahhosseini_ (45 امتیاز)
+1 امتیاز
1 پاسخ 291 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط یوری (426 امتیاز)
0 امتیاز
3 پاسخ 690 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط یوری (426 امتیاز)
+1 امتیاز
1 پاسخ 453 بازدید
0 امتیاز
0 پاسخ 931 بازدید
0 امتیاز
0 پاسخ 834 بازدید
+1 امتیاز
1 پاسخ 624 بازدید
0 امتیاز
1 پاسخ 357 بازدید
سوال شده 7 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
...