猿问

请问为什么使用hibernate不能插入数据库,没有什么反应?

applicationContext.xml:
<property name="password">
<value>123456</value>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
Person.hbm.xml:
<hibernate-mapping>
<class name="moon.vo.Person" table="person" >
<id name="id" type="java.lang.String">
<column name="id" length="32" />
<generator class="assigned"></generator>
</id>
<property name="username" type="java.lang.String">
<column name="username" length="20" />
</property>
<property name="password" type="java.lang.String">
<column name="password" length="9" />
</property>
</class>
</hibernate-mapping>

Person.java:
private String id;
private String username;
private String password;
已生成相应的get和set方法
operate类:
package moon.dao;
import moon.vo.*;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class operate extends HibernateDaoSupport{
public void insert(Person person)
{
this.getHibernateTemplate().getSessionFactory().openSession().save(person);
this.getSession().beginTransaction().commit();
}
}

test类:
public class test {
public static void main(String[] args)
{
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
Person p=new Person();
p.setId("id8457564");
p.setUsername("admin");
p.setPassword("password");
operate op=(operate)ctx.getBean("persondao");
op.insert(p);
}

}
插入时没有反应,数据也不插入数据库

蝴蝶刀刀
浏览 333回答 2
2回答

蛊毒传说

public void insert(Person person){Session session=this.getSession();Transaction tran=session.beginTransaction();session.save(person);tran.commit();}

慕桂英3389331

applicationContext.xml:<beans><bean id="dataSource"class="org.apache.commons.dbcp.BasicDataSource"><property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property><property name="url"><value>jdbc:mysql://localhost:3306/login</value></property><property name="username"><value>root</value></property><property name="password"><value>123456</value></property></bean><bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="dataSource"><ref bean="dataSource" /></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop><prop key="hibernate.show_sql">true</prop></props></property><property name="mappingResources"><list><value>moon/vo/Person.hbm.xml</value></list></property></bean><bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"><property name="sessionFactory"><ref bean="sessionFactory"/></property></bean><bean id="persondao" class="moon.dao.operate"><property name="hibernateTemplate"><ref bean="hibernateTemplate"/></property></bean><!-- 声明一个 Hibernate 3 的 事务管理器供代理类自动管理事务用 --><bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory"><ref local="sessionFactory" /></property></bean><bean id="persondaoProx"class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"><property name="transactionManager"><ref bean="transactionManager" /></property><!-- 注意这个属性, 必须为 true 使用 CGLIB 才不用强制编写被代理类的接口 --><property name="proxyTargetClass"><value>true</value></property><property name="target"><ref local="persondao" /></property><property name="transactionAttributes"><props><!-- 这里的方法签名可以精确到方法, 先懒惰一下全配置上 --><prop key="*">PROPAGATION_REQUIRED</prop></props></property></bean></beans>test类:public class test {public static void main(String[] args){ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");Person p=new Person();p.setId("id8457564");p.setUsername("admin");p.setPassword("password");operate op=(operate)ctx.getBean("persondaoProx");op.insert(p);}}
随时随地看视频慕课网APP
我要回答