powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring транзакции + Hibernate проблема с сохраниением
6 сообщений из 6, страница 1 из 1
Spring транзакции + Hibernate проблема с сохраниением
    #38751101
Stvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пытаюсь тут освоить сабж. Простой пример с сохранением объекта в базу не работает, второй день уже мучаюсь. Срабатывает все без ошибок, а в базе пусто. Но вот что примечательно, если запустить отладку и поставить точку останова после сохранения записи, а потом продолжить, запись добавляется. Буду весьма признателен за подсказки.

Прога:
Код: java
1.
2.
3.
4.
5.
6.
ApplicationContext context = new ClassPathXmlApplicationContext("resources/spring-config.xml");
IRockGroupService service = (IRockGroupService) context.getBean("entityService");
RockGroup rockGroup = new RockGroup();
rockGroup.setKey("I");
rockGroup.setName("Интрузивные");
System.out.println(service.saveRockGroup(rockGroup));


Конфиг:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
    <bean id="fileDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="org.hsqldb.jdbc.JDBCDriver"/>
        <property name="url" value="jdbc:hsqldb:file:d:/jprojects/gbase/test.db"/>
        <property name="username" value="sa"/>
        <property name="password" value=""/>
    </bean>

    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="fileDataSource"/>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
            </props>
        </property>
        <property name="annotatedClasses">
            <list>
                <value>org.stvan.gbase.entity.RockGroup</value>
            </list>
        </property>
    </bean>

    <bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

    <tx:annotation-driven transaction-manager="txManager"/>

    <bean id="rockGroupDAO" class="org.stvan.gbase.dao.RockGroupDao">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

    <bean id="entityService" class="org.stvan.gbase.dao.RockGroupService">
        <property name="dao" ref="rockGroupDAO"/>
    </bean>



Сервис:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
public class RockGroupService implements IRockGroupService {
    private IEntityDao dao;

    public void setDao(IEntityDao dao) {
        this.dao = dao;
    }

    @Transactional
    public int saveRockGroup(RockGroup rockGroup) {
        dao.save(rockGroup);
        return rockGroup.getId();
    }

    @Transactional
    public List<RockGroup> loadRockGroups() {
        return dao.load();
    }
}



DAO:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
public class RockGroupDao implements IEntityDao {
    private SessionFactory sessionFactory;

    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

    @Override
    public void save(RockGroup entity) {
        sessionFactory.getCurrentSession().save(entity);
    }

    @Override
    public List<RockGroup> load() {
        List<RockGroup> groups = (List<RockGroup>) sessionFactory.getCurrentSession()
                .createCriteria(RockGroup.class).list();
        return groups;
    }
}



В логах:
Creating new transaction with name [org.stvan.gbase.dao.RockGroupService.saveRockGroup]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT; ''
Opened new Session [SessionImpl(PersistenceContext[entityKeys=[],collectionKeys=[]];ActionQueue[insertions=org.hibernate.engine.spi.ExecutableList@36c1d588 updates=org.hibernate.engine.spi.ExecutableList@6fa9efcd deletions=org.hibernate.engine.spi.ExecutableList@7dbeb500 orphanRemovals=org.hibernate.engine.spi.ExecutableList@735d537e collectionCreations=org.hibernate.engine.spi.ExecutableList@7414b05d collectionRemovals=org.hibernate.engine.spi.ExecutableList@7a46e534 collectionUpdates=org.hibernate.engine.spi.ExecutableList@4471f7a3 collectionQueuedOps=org.hibernate.engine.spi.ExecutableList@16391170 unresolvedInsertDependencies=UnresolvedEntityInsertActions[]])] for Hibernate transaction
Preparing JDBC Connection of Hibernate Session [SessionImpl(PersistenceContext[entityKeys=[],collectionKeys=[]];ActionQueue[insertions=org.hibernate.engine.spi.ExecutableList@36c1d588 updates=org.hibernate.engine.spi.ExecutableList@6fa9efcd deletions=org.hibernate.engine.spi.ExecutableList@7dbeb500 orphanRemovals=org.hibernate.engine.spi.ExecutableList@735d537e collectionCreations=org.hibernate.engine.spi.ExecutableList@7414b05d collectionRemovals=org.hibernate.engine.spi.ExecutableList@7a46e534 collectionUpdates=org.hibernate.engine.spi.ExecutableList@4471f7a3 collectionQueuedOps=org.hibernate.engine.spi.ExecutableList@16391170 unresolvedInsertDependencies=UnresolvedEntityInsertActions[]])]
Obtaining JDBC connection
Obtained JDBC connection
begin
initial autocommit status: true
disabling autocommit
Exposing Hibernate transaction as JDBC transaction [jdbc:hsqldb:file:d:/jprojects/gbase/test.db, UserName=SA, HSQL Database Engine Driver]
call next value for rockgroup_seq
Hibernate: call next value for rockgroup_seq
Sequence identifier generated: BasicHolder[java.lang.Integer[3]]
Generated identifier: 150, using strategy: org.hibernate.id.SequenceHiLoGenerator
Initiating transaction commit
Committing Hibernate transaction on Session [SessionImpl(PersistenceContext[entityKeys=[EntityKey[org.stvan.gbase.entity.RockGroup#150]],collectionKeys=[]];ActionQueue[insertions=org.hibernate.engine.spi.ExecutableList@36c1d588 updates=org.hibernate.engine.spi.ExecutableList@6fa9efcd deletions=org.hibernate.engine.spi.ExecutableList@7dbeb500 orphanRemovals=org.hibernate.engine.spi.ExecutableList@735d537e collectionCreations=org.hibernate.engine.spi.ExecutableList@7414b05d collectionRemovals=org.hibernate.engine.spi.ExecutableList@7a46e534 collectionUpdates=org.hibernate.engine.spi.ExecutableList@4471f7a3 collectionQueuedOps=org.hibernate.engine.spi.ExecutableList@16391170 unresolvedInsertDependencies=UnresolvedEntityInsertActions[]])]
committing
Processing flush-time cascades
Dirty checking collections
Flushed: 1 insertions, 0 updates, 0 deletions to 1 objects
Flushed: 0 (re)creations, 0 updates, 0 removals to 0 collections
Listing entities:
org.stvan.gbase.entity.RockGroup{id=150, name=Интрузивные, parent=null, children=null, par_id=null, key=I, enname=null}
insert into rockgroup (enname, key, name, par_id, id) values (?, ?, ?, ?, ?)
Hibernate: insert into rockgroup (enname, key, name, par_id, id) values (?, ?, ?, ?, ?)
committed JDBC Connection
re-enabling autocommit
Closing Hibernate Session [SessionImpl(PersistenceContext[entityKeys=[EntityKey[org.stvan.gbase.entity.RockGroup#150]],collectionKeys=[]];ActionQueue[insertions=org.hibernate.engine.spi.ExecutableList@36c1d588 updates=org.hibernate.engine.spi.ExecutableList@6fa9efcd deletions=org.hibernate.engine.spi.ExecutableList@7dbeb500 orphanRemovals=org.hibernate.engine.spi.ExecutableList@735d537e collectionCreations=org.hibernate.engine.spi.ExecutableList@7414b05d collectionRemovals=org.hibernate.engine.spi.ExecutableList@7a46e534 collectionUpdates=org.hibernate.engine.spi.ExecutableList@4471f7a3 collectionQueuedOps=org.hibernate.engine.spi.ExecutableList@16391170 unresolvedInsertDependencies=UnresolvedEntityInsertActions[]])] after transaction
HHH000420: Closing un-released batch
Releasing JDBC connection
Released JDBC connection
...
Рейтинг: 0 / 0
Spring транзакции + Hibernate проблема с сохраниением
    #38751108
GregTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stvan,

в коннфиг добавь <context:annotation-config/>, должно помочь
...
Рейтинг: 0 / 0
Spring транзакции + Hibernate проблема с сохраниением
    #38751135
Stvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не помогло.

Сравнил логи в режиме отладки и так. В режиме отладки появляется строчка:
Adding transactional method 'RockGroupService.saveRockGroup' with attribute: PROPAGATION_REQUIRED,ISOLATION_DEFAULT; ''

Но тоже как-то странно. Иногда и без этой строки в логах сохраняет. Но только если ставить breakpoint. Если в режиме отладки не останавливать, тоже ничего не сохраняется.
...
Рейтинг: 0 / 0
Spring транзакции + Hibernate проблема с сохраниением
    #38751155
DDiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stvan,

если всё равное используете спринг, можно добавить
Код: xml
1.
2.
3.
<bean id="template" class="org.springframework.orm.hibernate4.HibernateTemplate">
        <property name="sessionFactory" ref="sessionFactory"/>
</bean>


тогда в dao можно просто писать
Код: java
1.
2.
3.
template.save(myObject);
OR
template.get(MyObject.class, id);


вроде должен возвращать ID присвоенный объекту,
Код: java
1.
sessionFactory.getCurrentSession().save(entity);


можно сразу его возвращать, чтоб потом не писать
Код: java
1.
return obj.getId();



Может у вас в дебаге какой-нибудь иной конфиг используется?
Вот ещё возможно ваш случай тыц
...
Рейтинг: 0 / 0
Spring транзакции + Hibernate проблема с сохраниением
    #38751177
Stvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDiverВот ещё возможно ваш случай тыц

Огромное спасибо, помогло. Выставил write_delay в 0 и все начало сохраняться, вот чувствовал, что как будто не успевает.
Ушел читать про write_delay.
За остальное тоже спасибо, посмотрю.
...
Рейтинг: 0 / 0
Spring транзакции + Hibernate проблема с сохраниением
    #38751180
GregTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring транзакции + Hibernate проблема с сохраниением
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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