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 پاسخ 197 بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
0 امتیاز
1 پاسخ 291 بازدید
+1 امتیاز
1 پاسخ 890 بازدید
سوال شده 4 سال قبل در برنامه نویسی توسط masoud shahhosseini_ (45 امتیاز)
+1 امتیاز
1 پاسخ 289 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط یوری (426 امتیاز)
0 امتیاز
3 پاسخ 683 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط یوری (426 امتیاز)
+1 امتیاز
1 پاسخ 443 بازدید
0 امتیاز
0 پاسخ 929 بازدید
0 امتیاز
0 پاسخ 832 بازدید
+1 امتیاز
1 پاسخ 619 بازدید
0 امتیاز
1 پاسخ 354 بازدید
سوال شده 7 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
...