请参阅我为用户信息提供user.java。如何使用spring + hibernate将数据插入数据库?
@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..
}
这是我的UserDAO
public class UserDao {
public interface UserDAO {
public String insert(User user);
}
}
,这是实现类,用于插入数据库 看,这是我code.please检查,并告诉我做什么我错
@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();
}
}
}
}
并在我的控制器成功注册后im插入数据到数据库由此
userDao.insert(user);
但我没有得到输出意味着没有任何数据插入数据库。为什么这..?这是我的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>
我怀疑你可能只需要到'@ Transactional'注释添加到您的'insert'方法。但是,您拥有JPA实体,那么您有没有使用实体管理器的原因?您不需要触摸Hibernate会话。另请注意,如果您将Spring Data添加到您的项目中,那么您可以删除您的实现并获得更多的免费功能。 :) – Steve 2014-09-25 10:25:16
看到这是我的code.please检查它,并告诉我我做错了什么 – user3189357 2014-09-25 10:35:25
没有错,因为这样...只是有更简单的方法(少代码)可用。本教程提供了一个使用Spring Data的简单示例:http://spring.io/guides/gs/accessing-data-jpa/ ...基本上,您可以将Spring Data添加到您的依赖项中,并修改您的接口以扩展CrudRepository或JpaRepository。那么你不需要编写你自己的DAO实现。 – Steve 2014-09-25 12:08:07