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 پاسخ 201 بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
0 امتیاز
1 پاسخ 294 بازدید
+1 امتیاز
1 پاسخ 903 بازدید
سوال شده 4 سال قبل در برنامه نویسی توسط masoud shahhosseini_ (45 امتیاز)
+1 امتیاز
1 پاسخ 293 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط یوری (426 امتیاز)
0 امتیاز
3 پاسخ 695 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط یوری (426 امتیاز)
+1 امتیاز
1 پاسخ 457 بازدید
0 امتیاز
0 پاسخ 933 بازدید
0 امتیاز
0 پاسخ 836 بازدید
+1 امتیاز
1 پاسخ 626 بازدید
0 امتیاز
1 پاسخ 359 بازدید
سوال شده 7 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
...