博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从零开始做SSH项目(二)
阅读量:6824 次
发布时间:2019-06-26

本文共 4850 字,大约阅读时间需要 16 分钟。

使用hibernate测试加载数据、删除数据和修改数据等功能时,针对的是与数据库表user对应的User。

为了简化对其他数据表对应的实体类的持久化操作,可以在项目中创建一个BaseHibernateDAO类,将数据的加载、添加、修改、删除等持久化方法封装其中。

 

BaseHibernateDAO.java

package com.dao;import java.io.Serializable;import javax.xml.rpc.handler.HandlerInfo;import org.hibernate.Session;import org.hibernate.Transaction;import com.util.HibernateSessionFactory;public class BaseHibernateDAO {    protected void add(Object object) {        Transaction t = null;        Session session = HibernateSessionFactory.getSession();        //获取session        try{            //开始事务            t = session.beginTransaction();            //持久化事务            session.save(object);            //提交事务            t.commit();        }catch (Exception e) {            if(t!=null){                //事务回滚                t.rollback();            }            e.printStackTrace();        }finally{            HibernateSessionFactory.closeSession();        }    }            //加载数据    protected Object get(Class cla, Serializable id) {        Object object = null;        Session session = HibernateSessionFactory.getSession();        try{            object = session.get(cla, id);        }catch (Exception e) {            e.printStackTrace();        }finally{            HibernateSessionFactory.closeSession();        }        return object;    }            //删除数据    protected void delete(Object object) {        Transaction t = null;        Session session = HibernateSessionFactory.getSession();        try {            t = session.beginTransaction();            session.delete(object);            t.commit();        } catch (Exception e) {            if(t!=null){                t.rollback();            }            e.printStackTrace();        } finally{            HibernateSessionFactory.closeSession();        }    }            //修改数据    protected void update(Object object) {        Transaction t = null;        Session session = HibernateSessionFactory.getSession();        try {            t = session.beginTransaction();            session.update(object);            t.commit();        } catch (Exception e) {            if(t!=null){                t.rollback();            }            e.printStackTrace();        } finally{            HibernateSessionFactory.closeSession();        }     }    }

 

为了使得数据访问层的代码更加清晰,创建一个接口UserDAO.java,并在接口中定义一些方法

package com.dao;import com.vo.Stu;public interface UserDAO {    public void add(Stu stu);    public void delete(Stu stu);    public Stu get(int id);    public void update(Stu stu);}

 

实现类UserDAOImpl类继承BaseHibernateDAO类(操作数据),实现UserDAO接口(具体实现方法)

package com.dao;import com.vo.Stu;public class UserDAOImpl extends BaseHibernateDAO implements UserDAO {    @Override    public void add(Stu stu) {        // TODO Auto-generated method stub        super.add(stu);    }    @Override    public void delete(Stu stu) {        // TODO Auto-generated method stub        super.delete(stu);    }    @Override    public Stu get(int id) {        // TODO Auto-generated method stub        return (Stu) super.get(Stu.class, id);    }    @Override    public void update(Stu stu) {        // TODO Auto-generated method stub        super.update(stu);    }}

 

创建测试类

package com.test;import java.util.HashSet;import java.util.Set;import org.hibernate.Session;import org.hibernate.Transaction;import com.dao.UserDAO;import com.dao.UserDAOImpl;import com.util.HibernateSessionFactory;import com.vo.Stu;public class OpTest {    public static void main(String[] args) {        OpTest test = new OpTest();        //test.testAdd();        //test.testDelete(3);        test.testUpdate(2);    }    //添加数据    public void testAdd() {        Stu stu = new Stu();        stu.setSage(11);        stu.setSname("85693897453");        stu.setSnumber("2016");        UserDAO userDAO = new UserDAOImpl();        userDAO.add(stu);    }        //删除数据    public void testDelete(int id) {        UserDAO userDAO = new UserDAOImpl();        Stu stu = userDAO.get(id);        userDAO.delete(stu);    }        //修改数据    public void testUpdate(int id) {        UserDAO userDAO = new UserDAOImpl();        Stu stu = userDAO.get(id);        stu.setSname("FUCK U!");        userDAO.update(stu);    }}

 ---由于这个项目很赶时间,所以代码请在GitHub查看~

①对项目整体设计的一个感受(面试官可能会让你画系统的架构图)
  • 做这个“项目”其实是很赶时间的,当时由于写项目的我们组也同是一个ACM队伍的,到处出去参加ACM比赛,最重要的周末在比赛中度过了,所以那半个月为了完成这个项目我们三个人没怎么睡觉。(12.15~1.2)由于是人才招聘网站,整体设计包括个人和企业两个模块,包括数据字典的设计、数据库表的对应关系都是不断推翻重建,甚至在之后还有站内信没来得及实现。
②在这个项目中你负责了什么、做了什么、担任了什么角色;
  • 我负责的是后端方面,前端由另一个同学负责。
  • 设计数据库表 + 构建Hibrnate数据模型和映射关系的配置文件 + 编写dao业务逻辑代码(和数据库交互)
  • 后端主程和测试人员,因为只有三个人完全从零到一写项目,不可能专门拿出人来做测试工作。
③ 从这个项目中你学会了那些东西,使用到了那些技术,学会了那些新技术的使用;
  • 这个项目主要学会了熟练使用Hibernate,用到了SSH
④项目描述中,最好可以体现自己的综合素质;比如你是如何协调项目组成员协同开发的或者在遇到某一个棘手的问题的时候你是如何解决的?又或者说你在这个项目用了什么技术实现了什么功能?比如:用redis做缓存提高访问速度和并发量、使用消息队列削峰和降流等等。
  • 这个项目印象最深刻的就是一个Hibernate产生脏数据的问题,询问学长说要用Spring重构才能解决。具体还没有实施...

转载于:https://www.cnblogs.com/Roni-i/p/10166663.html

你可能感兴趣的文章
laravel 如何引入自己的函数或类库
查看>>
python IndentationError: unexpected indent
查看>>
[docker]通过阿里云源安装docker && flannel不通问题解决(try this guy out)
查看>>
Android RecyclerView遇到notifyDataSetChanged无效时的解决方案
查看>>
微信小程序的登陆流程详解
查看>>
008-Spring Boot @EnableAutoConfiguration深入分析、内部如何使用EnableAutoConfiguration
查看>>
白话插件框架原理
查看>>
type=file文件上传H5新特性
查看>>
技术学习之分析思想
查看>>
《精通android网络开发》--使用Socket实现数据通信
查看>>
【转】iPhone X
查看>>
<springBoot>(二)(入门篇)Eclipse中右击新增没有Spring Starter Project选项处理办法...
查看>>
kbmmw 的远程桌面功能
查看>>
python 阿里云短信群发推送
查看>>
图的邻接表存储
查看>>
花旗银行金融研发部培训留念
查看>>
PHP 扩展开发之Zephir
查看>>
virtual box 安装centos min
查看>>
linux tracepoint用法【转】
查看>>
iOS 再谈 代理传值
查看>>