2016-02-16 5 views
0

Я использую hibernate вместе с apache mina для создания многопользовательского игрового сервера. У меня есть отдельный клиентский класс для каждого клиента (apache mina), отдельная транзакция и сеанс.
Итак, вопрос:Задерживает ли hibernate основную нить?

ли спящий режим блокирует мой основной поток, когда я коплю свою сущность в базу данных или выполнения огромного запроса на выборку?

+0

«Блоки» и «замки» - это две разные вещи. Что вы спрашиваете? – markspace

+0

Я имею в виду замок, я думаю. Я не хочу задерживаться при синхронизации движений игроков. –

ответ

0

Да, ваши вызовы JDBC синхронны, поэтому они будут блокироваться, пока что-то не будет возвращено из базы данных, это не относится к Hibernate.

Вы можете создать отдельный поток и обработать действия с БД с помощью этого. Будьте осторожны, хотя вы столкнетесь с проблемами обмена сущностями по потокам, например, с получением ленивых отношений.

+0

Whoa. Серьезно, есть проблемы в Hibernate с совместным использованием сущностей по потокам? Можете указать на документацию? – markspace

+0

@markspace Сессии не являются потокобезопасными, хотя повторная привязка объектов не является невозможной. Для операций записи, в которых вы не заботитесь о результате, у вас не будет проблемы. https://pveentjer.wordpress.com/2007/02/19/sharing-hibernate-entities-between-threads/, http://stackoverflow.com/questions/32549386/modifying-hibernate-entities-from-multiple-threads – francis

Смежные вопросы