powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / подружить tomcat и hibernate
25 сообщений из 160, страница 6 из 7
подружить tomcat и hibernate
    #37873171
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

дк вот думал заставить Hibernate выполнить произвольный Insert а он все равно либо заполни id мне руками, либо excepion
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37873172
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczBlazkowiczТ.е. autogenerated keys не поддерживается вообще? У вас ID другим образом генерятся?
Вам драйвер явно сообщает что методы с autogenerated keys не поддерживаются, а вы все равно в хибере используете Identity ID. Надо как-то решать.

а где это вы увидели? O_o
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37873178
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37873191
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

а предложения как это обойти? просто убрать @GeneratedValue() и ставить фиктивную idшку и прописать @SqlInsert ?
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37873224
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
32338а предложения как это обойти? просто убрать @GeneratedValue() и ставить фиктивную idшку и прописать @SqlInsert ?
база поддерживает GeneratedValue ?
а драйвер?
отнаследовать хиберовские классы и заменить методы на другие.
ставить не "фиктивную idшку", а использовать другой метод получения ключей
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37873258
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

насколько мне известно из мануала по Sybase он генерит id-шники сам, но получить следующий у него нельзя...
только после вставки можно получить уже готовый id

к примеру:

Код: sql
1.
2.
insert into User(name, login) Values('Вася', 'Vangog')
select @@identity


но эм вставлять в поле ID которое является identity просто запрещено самим Sybase
т.е. либо поле Identity и этим рулит Sybase либо поле ручного ввода, и этим рулит сам пользователь (что ни есть хорошо, так как последовательностей нету)

вообщем и целом получается что надо
использовать для вставки SQL так получается?
если так то что будет если у меня используется в качестве менеджера транзакций Hibernate ?
т.е. как поведет себя Connection Pool и не получится ли лишних коннектов к БД?
P.S.
использую аннотации @Transactional
в спринговом конфиге написанно так:
Код: xml
1.
2.
3.
4.
5.
6.
7.
    <!-- Настраивает управление транзакциями с помощью аннотации @Transactional -->
    <tx:annotation-driven transaction-manager="transactionManager" />
    
    <!-- Менеджер транзакций -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37873278
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читайте исходники хибера, диалект и то что у вас в Stacktrace.
Вам нужно научить его делать "select @@identity". Возможно хибер это уже умеет. нужно только найти где включить.
И второе это обойти вызов именно того метода prepareStatement(). Опять же по stackatrаce найти где именно он вызывается и почему именно он, а не один из альтернативных.
Посмотрите ещё что у вас вот этот метод возвращает
http://docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/dialect/SybaseDialect.html#supportsInsertSelectIdentity%28%29
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37873303
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЧитайте исходники хибера

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
	public boolean  supportsInsertSelectIdentity() {

		return true;
	}

public String getIdentitySelectString() {
		return "select @@identity";
	}
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37873304
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

мда никогда не думал, что для маленького RESTful сервера придется рыскать по исходникам Hibernate =)

мне уже начальник говорит выкинь ты из проекат это гавно юзай Spring JDBC и не парься....
а я все мучаюсь и мучаюсь....
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37873307
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha,

это вот куда надо добавить?
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37873325
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha,

а у меня в исходниках немножко не так:

Код: java
1.
2.
3.
4.
5.
6.
7.
public boolean supportsInsertSelectIdentity() {
	return true;
}

public String appendIdentitySelectToInsert(String insertSQL) {
	return insertSQL + "\nselect @@identity";
}
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37873359
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
32338а у меня в исходниках немножко не так:
все так, ты другой кусок кода зацепил. много бед, один ответ - надо дебажить исходник и смотреть что не так. должно работать.

з.ы. с хибернейтом (да и не только с ним) поначалу всегда так. тут как в мультфильме, "лучше день потерять, потом за 5 минут долетим". но потерять придется больше чем день.
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37873387
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha,

там че-то совсем очень много всего....
эх придется убить пару недель наверное на это, главное потом что бы действительно "за 5 минут долететь",
а то как-то много времени на это уйдет =(
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37873397
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
32338chpasha,

там че-то совсем очень много всего....
всего и не надо. как правило интересно либо место возникновения исключения либо то, что к этому вызову привело. но скорей всего у тебя что-то в маппингах не так. погугли просто на предмет hibernate+autogenerated keys+sybase и найди рабочие примеры
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37873404
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что вы хотели от legacy базы с экстравагантным драйвером. Вы бы ещё Hibernate 2.0 использовали.
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37873463
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

не я уже, больше склоняюсь использовать Spring JDBC
потому как в своем SQL я смогу безпрепятственно использовать весь синтаксис T-SQL от Sybase
и индексы прописывать (которые очень часто Sybase имеет свойство терять) и никаких тебе проблем с insert
да и выполнение хранимых процедур, вместо IUD операций тоже имеет свои плюсы

но блин хотелось попользоваться Hibernate получить кайф от написания пары строк кода вместо
мало кому нужного томика SQL + JDBC

больше всего меня раздражает что работает все акромя INSERT
прям уже хочется все бросить и уйти в монастырь...
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37873475
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
32338прям уже хочется все бросить и уйти в монастырь...
вначале всегда тяжело. я в свое время убил пол дня на то, чтобы хибер UUID гонял в postgres и обратно наиболее элегантным способом. как только начинаешь изучать, спотыкаешься на каждой мелочи. один раз нужно разобраться. только тогда пойдет профит. в твоей ситуации аналогично - один раз разберешься, дальше уже будешь знать как.
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37873479
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha,

да я это понимаю что надо один раз разобраться, только все равно не пойму, куда смотреть, за кем глядеть и откуда цепочка вьется

короче говоря запутался я... надо на свежую голову брать в руки напильник а не как сейчас...
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37874272
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробовав немного поэкспериментировать с JdbcTemplate
я тут наткнулся на такую вещь, что он работает быстрее потому как на поиске я (к примеру) не использую
транзакцию, т.е. убрал аннотацию @Transactional у метода сервиса (ну нету же смысла на 1-ну операцию тащить транзакцию),
но насколько я понял для корректной работы SessionFactory.getCurrentSeccion() нужна транзакция...

внимание вопрос ЗАЧЕМ?(может я конечно не много не понял как там это настроить правильно, но без транзакции великий Hibernate отказывается работать и говорит что сессия пустая) зачем использовать транзакцию в таких случаях как CRUD ? когда элемент один и не имеет связей?

я конечно понимаю зачем нужны транзакции (это как бы пакетная операция которая, в случае чего должна откатится вся), но хоть убей не пойму ЗАЧЕМ нужно это дело для одной операции, и как рулить такими ситуациями когда транзакция не нужна и тянуть ее ну просто нету смысла (т.е. как сделать работу Hibernate без транзакций, просто чет я не нашел этого в мануале, или пролистал не обратив внимания, а спросить не у кого =( )
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37874328
Фотография schwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
32338,

Никак. Все изменения базы состояния бд в Хайбернейт делаются только в рамках транзакций.
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37874374
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schwa,

но это же замедляет работу с БД примерно на треть!
а когда работа с БД критична? то люди просто не используют Hibernate ?
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37874395
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
32338но это же замедляет работу с БД примерно на треть!

Речь о Sybase? У остальных вроде не замедляет особо. А как целостность данных вы предлагаете сохранять без транзакций вообще?
Есть Read-Only транзакции, возможно они в вашем случае будут быстрее.

32338а когда работа с БД критична?
Работа с БД всегда критична.

32338то люди просто не используют Hibernate ?
Hibernate не используют либо когда его не умеют готовить, либо когда это лишено смысла - нет большого дерева ассоциаций, данные организованы и обрабытываются в более табличном виде. Тогда толку от него не много.
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37874418
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

я и не говорю что не надо использовать транзакции просто когда идет один Select то смысл в транзакции?

просто получается что замедляет работу

select ID, Name from User where ID = ?

что увеличивает время отклика....

я протестировал и получилось что
1000 чтений из БД с помощью jdbcTemplate и Hibernate примерно на треть разнятся т.е. видимо из-за работы в транзакции
потому как jdbcTemplate я не использовал транзакции для такой выборки
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37874429
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

в моем случае я его не могу приготовить из-за Sybase 11 и jconn3 которые не понимают автогенерацию.... и в нем нельзя (без применения костылей и подпорок) вставлять в таблицу идентификатор который описан как identity поле (автоинкрементовое)

поэтому что бы не возиться с ним (потому как инфы об этом очень мало, а сам я пока не врубаюсь что да как) решил отложить этот вопрос....

это как в рекламе "Не люблю кошек. Ты просто не умеешь их готовить."

да пока кухня с внутренностями Hibernate для меня табу....
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37874434
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
32338я и не говорю что не надо использовать транзакции просто когда идет один Select то смысл в транзакции?

:) Каждый запрос в базе выполняется в своей транзакции чтобы обеспечить ACID. Разница лишь в том управляете ли вы это транзакцией в ручную, или работает автокоммит.


32338просто получается что замедляет работу
select ID, Name from User where ID = ?
что увеличивает время отклика....

Нет, не замедляет.


32338я протестировал и получилось что
1000 чтений из БД с помощью jdbcTemplate и Hibernate примерно на треть разнятся т.е. видимо из-за работы в транзакции
потому как jdbcTemplate я не использовал транзакции для такой выборки
[/quot]
Hibernate помимо чтения конвертирует ещё данные в объекты. Что вы там тестировали не очень-то понятно.
...
Рейтинг: 0 / 0
25 сообщений из 160, страница 6 из 7
Форумы / Java [игнор отключен] [закрыт для гостей] / подружить tomcat и hibernate
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]