![](/img/trans.png)
[英]How can I use 1 array with 2 different sizes using inheritance and constructors
[英]Can I use different Hibernate batch sizes depending on the entity or table?
我想知道a)是否有意義,b)是否可以為不同的實體使用不同的創建批量大小?
例子:
A
有數百萬或行,但只有幾個小列。 對於這個表,我可以將批處理值設置為大約 100 甚至 1000。B
包含一個包含數千字節數據的列,這些數據在插入時填充。 對於這張表,我認為我應該只使用 1 到 10 之間的批處理值。 也許我可以使用自己的org.hibernate.engine.jdbc.batch.spi.BatchBuilder
實現,我根據要插入的實體設置批量大小? (通過設置 hibernate 屬性hibernate.jdbc.batch.builder
。)
這聽起來合乎邏輯嗎?
你的方法似乎是正確的。 默認實現BatchBuilder
是BatchBuilderImpl
並且在buildBatch
方法中傳遞的參數之一是BatchKey
。 這是格式(完全合格的實體 class 名稱)#(操作類型> 例如,com.test.A#INSERT。
public class BatchBuilderImpl implements BatchBuilder, Configurable, Manageable, BatchBuilderMXBean { .......
@Override
public Batch buildBatch(BatchKey key, JdbcCoordinator jdbcCoordinator) {
final Integer sessionJdbcBatchSize = jdbcCoordinator.getJdbcSessionOwner()
.getJdbcBatchSize();
final int jdbcBatchSizeToUse = sessionJdbcBatchSize == null ?
this.jdbcBatchSize :
sessionJdbcBatchSize;
return jdbcBatchSizeToUse > 1
? new BatchingBatch( key, jdbcCoordinator, jdbcBatchSizeToUse )
: new NonBatchingBatch( key, jdbcCoordinator );
}
}
在您的自定義實現中,您可以通過從包含實體 class 和相應批量大小的外部文件加載配置來設置批量大小。 批量大小將取決於 BatchKey 的第一部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.