猿问

无法使用spring和hibernate集成自动创建表和插入记录

我是spring的新手,并试图将hibernate与spring结合起来。我正在使用 MySql 数据库并尝试使用 saveOrUpdate() 方法插入记录。


所以程序正在触发一个用于创建表的 sql 查询(应该如此)。


但问题是,即使它正在触发“create table”查询,但该表并未在数据库中创建。此外,如果表是在数据库中手动创建的,然后尝试插入记录,则它什么也不做。


我曾尝试使用 save() 和 persist() 方法而不是 saveOrUpdate(),但它让我无处可去。


这是主要课程。已设置 bean 类 (Employee) 的值以插入记录。


public static void main( String[] args )

{

    ApplicationContext context=new 

    ClassPathXmlApplicationContext("sphb.xml");

    EmployeeDAO edao=(EmployeeDAO) context.getBean("d");

    Employee e=new Employee();

    e.setId(1);

    e.setName("sourav");

    e.setSalary(100000);

    edao.saveEmployee(e);

}

这是 bean 类:- public class Employee { private int id; 私有字符串名称;私人内部工资;//getter 和 setter }


这是包含所有配置的 xml 文件。


<beans xmlns="http://www.springframework.org/schema/beans"  

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  

xmlns:p="http://www.springframework.org/schema/p"  

xsi:schemaLocation="http://www.springframework.org/schema/beans   

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">


    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">  

    <property name="driverClassName"  value="com.mysql.cj.jdbc.Driver"> 

    </property>  

    <property name="url" value="jdbc:mysql://localhost:3306/db"></property>  

    <property name="username" value="root"></property>  

    <property name="password" value="1234"></property>  

    </bean>


    <bean id="mysessionFactory" 

    class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> 

    <property name="dataSource" ref="dataSource"></property>  


    <property name="mappingResources">  

    <list>  

    <value>mapping.hbm.xml</value>  

    </list>  

    </property>  


    <property name="hibernateProperties">  

        <props>  

            <prop 

            key 

            ="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>  

            <prop key="hibernate.hbm2ddl.auto">update</prop>  

            <prop key="hibernate.show_sql">true</prop>  


        </props>  

    </property>  

    </bean>  

千巷猫影
浏览 100回答 1
1回答

繁星coding

通过添加使用注释来管理事务使其工作&nbsp;<bean id="txManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">&nbsp; &nbsp; &nbsp; &nbsp; <property name="sessionFactory" ref="mysessionFactory"></property>&nbsp; &nbsp; &nbsp; </bean>&nbsp; &nbsp; <tx:annotation-driven transaction-manager="txManager"/>还为 sessionFactory 添加了 setter,并为事务使用了注解,并赋予了写操作的权限。public class EmployeeDAO&nbsp;{&nbsp; &nbsp; HibernateTemplate template;&nbsp; &nbsp; public void setTemplate(HibernateTemplate template) {&nbsp; &nbsp; &nbsp; &nbsp; this.template = template;&nbsp; &nbsp; }&nbsp; &nbsp; public void setSessionFactory(SessionFactory sessionFactory)&nbsp; &nbsp; {&nbsp; &nbsp; this.template=new HibernateTemplate(sessionFactory);&nbsp; &nbsp; }&nbsp; &nbsp; @Transactional(readOnly=false)&nbsp; &nbsp; public void saveEmployee(Employee e)&nbsp;&nbsp; &nbsp; {&nbsp; &nbsp; template.saveOrUpdate(e);&nbsp; &nbsp; }}
随时随地看视频慕课网APP

相关分类

Java
我要回答