Вы должны добавить свой keyListener для каждого компонента, который вам нужен. Эти компоненты будут отправлять только компонент с фокусом. Например, если в вашем JFrame есть только один TextBox, то TextBox имеет фокус. Таким образом, вы должны добавить KeyListener и к этому компоненту.
Процесс тот же:
myComponent.addKeyListener(new KeyListener ...);
Примечание. Некоторые компоненты не могут быть сфокусированы, как JLabel.
Для настройки фокусировки вам необходимо:
myComponent.setFocusable(true);
См. мой ответ на Ваш другой вопрос при чтении всего FAQ, Вы связались с:
Следуют руководству по оптимальной практике! Удостоверьтесь, чтобы все и отображения определили ленивый = "верный" в Hibernate2 (это - новое значение по умолчанию в Hibernate3). Используйте HQL, ПОКИНУТУЮ ВЫБОРКУ СОЕДИНЕНИЯ для определения, какие ассоциации Вы должны быть получены в начальном ВЫБОРЕ SQL.
А второй способ избежать n+1 выбирает проблему, должен использовать выборка = "подвыбор" в Hibernate3.
, Если Вы все еще не уверены, обратитесь к Быть в спящем режиме документации и Будьте в спящем режиме в Действии.
Посмотрите подсказки относительно улучшающая производительность . Если Вы не будете осторожны с соединениями, то Вы закончите с Декартово произведение проблемы.
Помимо стратегии "выборки" Вы могли бы также попытаться установить пакетный размер выборки в, в спящем режиме свойства, таким образом, это выполнит присоединяющиеся запросы не один за другим, но в пакетах.
В Вашем appContext.xml:
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
...
<property name="hibernateProperties">
<props>
...
<prop key="hibernate.default_batch_fetch_size">32</prop>
</props>
</property>
</bean>
Так вместо:
SELECT ... FROM Hobby WHERE personId=1
SELECT ... FROM Hobby WHERE personId=2
Вы доберетесь:
SELECT ... FROM Hobby WHERE personId in (1,2,...,32);
SELECT ... FROM Hobby WHERE personId in (33,34,...,64);
Вы попробовали "соединение" стратегия выборки наборов?
Если Вам нужна функция, в спящем режиме, и этой функцией является багги, у Вас есть две опции: a) Отправляют bugrequest и используют обходное решение (медленная производительность или рукописный sql), пока ошибка не исправлена, который будет требовать времени, b) Отправляют bugrequest наряду с bugfix и тестами. (конечно, Вы могли просто использовать bugfix и пропустить bugrequest и протестировать часть).