請參閱我爲用戶信息提供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