spring+springmvc+hibernate
来源:互联网 发布:数据分析前途 编辑:程序博客网 时间:2024/06/02 05:31
首先我们要知道Hibernate五大对象:,本实例通过深入的使用这五大对象和spring+springMVC相互结合,体会到框架的好处,提高我们的开发效率
Hibernate有五大核心接口,分别是:Session Transaction Query SessionFactoryConfiguration 。这五个接口构成了Hibernate运行的基本要素,可以执行存取,持久化,事务管理等操作。这五个接口可以位于系统的业务逻辑层和持久化层。下面是一张Hibernate的关系图:
Session接口:
Session接口 Session 接口对于Hibernate 开发人员来说是一个最重要的接口。然而在Hibernate中,实例化的Session是一个轻量级的类,创建和销毁它都不会占用很多资源。这在实际项目中确实很重要,因为在客户程序中,可能会不断地创建以及销毁Session对象,如果Session 的开销太大,会给系统带来不良影响。但是Session对象是非线程安全的,因此在你的设计中,最好是一个线程只创建一个Session对象。 session可以看作介于数据连接与事务管理一种中间接口。我们可以将session想象成一个持久对象的缓冲区,Hibernate能检测到这些持久对象的改变,并及时刷新数据库。我们有时也称Session是一个持久层管理器,因为它包含这一些持久层相关的操作, 诸如存储持久对象至数据库,以及从数据库从获得它们。需要注意的是,Hibernate的session不同于JSP 应用中的HttpSession。当我们使用session这个术语时,我们指的Hibernate 中的session,而我们以后会将HttpSesion 对象称为用户session。
SessionFactory接口:
SessionFactroy接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。
Transaction接口
Transaction接口负责事务相关的操作,一般在Hibernate的增删改中出现,但是使用Hibernate的人一般使用Spring去管理事务。
Query接口
Query负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。它的返回值一般是List。需要自己转换。
Configuration接口:
Configuration对象用于配置并根启动Hibernate。Hibernate应用通过Configuration实例来指定对象—关系映射文件的位置或者动态配置Hibernate的属性,然后创建SessionFactory实例。我们可以查看Configuration的源代码,它的configure()方法是这样实现的:
第一步:引入相关的包
(对于每个包,我们要有意识的去了解其功能,这样今后的时候项目中报错之后我们也可以及时知道错误出在哪里?)
第二: 继续配置hibernatexml文件( springAnnotation-hibernate.xml)
- <span style="font-size:18px;"><span style="font-size:18px;">package com.tgb.web.controller.dao;
- import java.util.List;
- import com.tgb.web.controller.entity.User;
- public interface IUserDAO {
- public void addUser(User user);
- public List<User> getAllUser();
- public boolean delUser(String id);
- public User getUser(String id);
- public boolean updateUser(User user);
- }
- </span></span>
- 实现类UserDAo
第四: 新建实体User
通常是 hibernate.cfg.xml)中声明持久性类 hibernate.cfg.test.xml第五 : IUserManager
- <span style="font-size:18px;"><span style="font-size:18px;">package com.tgb.web.controller.service;
- import java.util.List;
- import com.tgb.web.controller.entity.User;
- public interface IUserManager {
- public void addUser(User user);
- public List<User> getAllUser();
- public boolean delUser(String id);
- public User getUser(String id);
- public boolean updateUser(User user);
- }
- </span></span>
UserManager实现类
第六 UserController,控制类
- <span style="font-size:18px;">package com.tgb.web.controller;
- import java.io.IOException;
- import java.io.PrintWriter;
- import java.util.List;
- import javax.annotation.Resource;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import com.tgb.web.controller.entity.User;
- import com.tgb.web.controller.service.IUserManager;
- @Controller
- @RequestMapping("/user")
- public class UserController {
- @Resource(name="userManager")// 获取spring配置文件中bean的id为userManager的,并注入
- private IUserManager userManager;
- @RequestMapping("/toAddUser")
- public String toAddUser(){
- return "/addUser";
- }
- @RequestMapping("/addUser")// 请求url地址映射,类似Struts的action-mapping
- public String addUser(User user){
- userManager.addUser(user);
- return "redirect:/user/getAllUser";
- }
- @RequestMapping("/getAllUser")
- public String getAllUser(HttpServletRequest request){
- List<User> user = userManager.getAllUser();
- request.setAttribute("user", user);
- return "/userManager";
- }
- @RequestMapping("/delUser")
- public void delUser(String id,HttpServletResponse response){
- String result = "{\"result\":\"error\"}";
- if(userManager.delUser(id)){
- result = "{\"result\":\"success\"}";
- }
- PrintWriter out = null;
- response.setContentType("application/json");
- try {
- out = response.getWriter();
- out.write(result);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- @RequestMapping("/getUser")
- public String getUser(String id,HttpServletRequest request){
- User user = userManager.getUser(id);
- request.setAttribute("user", user);
- return "/editUser";
- }
- @RequestMapping("/updateUser")
- public String updateUser(User user,HttpServletRequest request){
- if(userManager.updateUser(user)){
- user = userManager.getUser(user.getId());
- request.setAttribute("user", user);
- return "/editUser";
- }else{
- return "/error";
- }
- }
- }
- </span>
第七:前台页面(详细内容不再详列出,源码分享给大家)
运行效果
源码下载:http://download.csdn.net/detail/lishehe/7708997
- SpringMVC+Spring+Hibernate整合
- spring + springMVC + hibernate 集成
- SpringMVC整合Spring、Hibernate
- Spring-SpringMVC-Hibernate整合
- 搭建springMVC+Hibernate+Spring
- SpringMVC+Spring+Hibernate整合
- SpringMVC+Spring+Hibernate+EHCache
- SpringMVC+Spring+Hibernate配置
- springMVC+spring+hibernate配置
- SpringMVC+Spring+hibernate整合
- ssm Springmvc+spring+hibernate
- springmvc-spring-hibernate整合
- spring+springmvc+hibernate crud
- Spring SpringMVC Hibernate 注解
- hibernate+spring+springMVC
- spring+springmvc+hibernate
- spring+springMVC+Hibernate配置文件
- ssh:spring+springmvc+hibernate
- Git使用SSH方式的配置
- Error:Execution failed for task ':app:transformClassesWithDexForMfinished with non-zero exit value 2
- caffe proto.exe生成caffe.pb.h和caffe.pb.cc文件
- QML中组件Component和装载Loader的使用
- 第3章 字符串 向量和数组
- spring+springmvc+hibernate
- HDU 4352 数位dp
- requestWindowFeature(Window.FEATURE_NO_TITLE)失效
- js毫秒倒计时
- java 8.25总结
- C++中的Vector与map
- [PAT] B1043
- JQuery基础内容
- 图片验证码