Как отмечали другие, это микро-оптимизация.
(В политике или журналистике это известно как пуповизна; -)
Является ли программа достаточно большой для имеют более чем несколько уровней вызовов функции / метода / подпрограммы?
Если это так, вероятно, были некоторые предотвратимые вызовы, и они могут тратить сотни раз на столько же времени, как и на невысокую неэффективность.
В предположении, что вы удалили те (что мало кто делает), тогда, во что бы то ни стало, запустите его 10 ^ 9 раз под секундомером и посмотрите, что быстрее.
JPA 2.0 поддерживает коллекции примитивов через аннотацию @ElementCollection
, которую вы можете использовать в сочетании с поддержкой коллекций java.util.Map
. Что-то вроде этого должно работать:
@Entity public class Example {@Id long id; // .... @ElementCollection @MapKeyColumn (name = "name") @Column (name = "value") @CollectionTable (name = "example_attributes", joinColumns = @ JoinColumn (name = "example_id")) Map & lt; String , String & gt; attributes = new HashMap & lt; String, String & gt; (); // карты из имени атрибута в значение}
@ElementCollection (fetch = FetchType.LAZY) @CollectionTable (name = "raw_events_custom", joinColumns = @JoinColumn (name = "raw_event_id")) @MapKeyColumn (name = "field_key", length = 50) @ Столбец (name = "field_val", length = 100) @BatchSize (size = 20) private Map & lt; String, String & gt; customValues = new HashMap & lt; String, String & gt; ();
Это пример того, как настроить карту с контролем над именами столбцов и таблиц и длиной поля.
Map & lt; String, SomeOtherClass & gt;
– L. Holanda 8 April 2014 в 00:06example_attributes
должен иметь составной ключ(example_id, name)
- это то, что hbm2ddl будет генерировать из вышеизложенного. – James Bassett 20 November 2014 в 23:47Указанный ключ был слишком длинным; Максимальная длина ключа составляет 767 байт
. Первичный ключ, который он пытается создать, представляет собой комбинацию varchar (255) и @JoinColumn, которая превышает размер столбца по умолчанию. Вам нужно либо изменить вашу базу данных , либо изменить ваш @MapKeyColumn, чтобы предоставить длину:@MapKeyColumn (name = & quot; name & quot ;, length = 100)
– Jon 9 September 2016 в 18:48