日期:2014-05-20  浏览次数:20755 次

Spring 和Hibernate 整合的问题
Spring和hibernate整合之后,执行一个方法,发出了sql语句:Hibernate: insert into users (name, password) values (?, ?)。但是我到mysql查询的时候,并没有查到insert的数据。

当我粘贴这段语句到mysql中执行,是可以顺利执行的,所以sql语句没有问题。而且我写了Try catch语句,没有抛出异常。

我觉得问题在于事物没有提交。请问各位这是个什么原因?

ApplicationContext.xml:

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
value="file:src/hibernate.cfg.xml">
</property>
</bean>

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

<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>

<aop:config>
<aop:pointcut expression="execution(* com.lizhaog.dao.UserManagementImpl.*.*(..))" id="addManagerMethod"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="addManagerMethod"/>
</aop:config>

<bean id="UserManagementImpl" class="com.lizhaog.dao.UserManagementImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>

UserManagementImpl.class:
Java code

    public void addUser(String name, String password){
        try {
            User user = new User();
            user.setName(name);
            user.setPassword(password);
            this.getSession().save(user);
        } catch (DataAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }



User就是一个普通的实体类,包括 id。name 和password三个属性

main方法为:
Java code

    public static void main(String args[]){
        BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserManagementImpl userManage = (UserManagementImpl) factory.getBean("UserManagementImpl");
        userManage.addUser("test", "2");
    }



------解决方案--------------------

com.lizhaog.dao.UserManagementImpl.*.*(..)
这个切面怎么说啊 ~~~ UserManagementImpl 下面的所有方法、所有........!!!
你直接切dao就OK了~~~!
还有、怎么切面切dao干什么?
切Serivce层嘛!
Java code

读到数据的时候必须 插入和查找的两条语句 同时执行。。

------解决方案--------------------
Up...
恭喜。
------解决方案--------------------
在同一个session中是可以查到的。但是由于事务没有提交,另外的session就查不到数据、

探讨

读到数据的时候必须 插入和查找的两条语句 同时执行。。

分开两次执行的时候,就查找不到上次执行时插入的数据了。。。