如何使用Spring + Hibernate将数据插入数据库?

use*_*357 5 java mysql spring hibernate

有关用户信息,请参见im having user.java。

@Entity(name = "user")
@Table(name = "user")
public class User {

    @Id
    @Column(name = "id")
    private String id;  
    @Column(name = "password")
    private String password;
//getter and setter for this..
}
Run Code Online (Sandbox Code Playgroud)

这是我的用户

public class UserDao {
    public interface UserDAO {
        public String insert(User user);

    }
}
Run Code Online (Sandbox Code Playgroud)

这是用于插入数据库的impl类,请参阅这是我的代码。请检查一下并告诉我我在做什么错

@Repository
@Transactional
public class UserImpl implements UserDAO {

    private DataSource dataSource;

    @Autowired
    SessionFactory sessionFactory;
    @Resource(name = "sessionFactory")
    public void setDataSource(DataSource dataSource) {
        this.dataSource = dataSource;
    }

    @Override
    public String insert(User use) {

        Session session = this.sessionFactory.openSession();
        try{

            Session sess = this.sessionFactory.getCurrentSession();              
            session.save(reg);


                        return (String)user.getUserName(); 
                        }catch(Exception e){
                            System.out.println("in catch"+e.getMessage());
                            e.printStackTrace();

    }

    }
}




} 
Run Code Online (Sandbox Code Playgroud)

并在我的控制器中成功注册后,通过此将数据插入数据库

 userDao.insert(user);
Run Code Online (Sandbox Code Playgroud)

但是我没有得到输出意味着没有任何数据插入到数据库中。为什么呢?这是我的MVC配置

<context:component-scan base-package="com.user.xyz" />
    <mvc:annotation-driven />
    <mvc:resources mapping="/resources/**" location="/resources/images/, /resources/css/" />
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/" />
        <property name="suffix" value=".jsp" />

    </bean>
Run Code Online (Sandbox Code Playgroud)

Pho*_*yen 0

请记住这一点:您没有任何现有会话,但您使用getCurrentSession(). 要使用此方法,您必须已经有一个会话。尝试这个:

Session session = this.sessionFactory.openSession();
Run Code Online (Sandbox Code Playgroud)

现在您有一个交易会话。

您应该在 xml 文件(hibernate.xml 或 spring.xml)中声明 sessionFactory,然后使用 @Autowire 获取它并打开新会话。