从零开始做SSH项目(二)
使用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
- 这个项目印象最深刻的就是一个Hibernate产生脏数据的问题,询问学长说要用Spring重构才能解决。具体还没有实施...
从零开始做SSH项目(二)的更多相关文章
- 从零开始做SSH项目(一)
1.数据库脚本 用户表 CREATE TABLE `ybl`.`userinfo`( `id` INT NOT NULL AUTO_INCREMENT, `email` ) NOT NULL, `id ...
- 从零开始的SpringBoot项目 ( 二 ) 使用IDEA创建一个SpringBoot项目
工欲善其事 , 必先利其器 . IntelliJ IDEA 2019.3.3 x64的安装与破解 下面详细说明下如何使用idea创建我们的第一个springboot项目: 首先打开idea主界面选择 ...
- 从零开始的SpringBoot项目 ( 五 ) 整合 Swagger 实现在线API文档的功能
综合概述 spring-boot作为当前最为流行的Java web开发脚手架,越来越多的开发者选择用其来构建企业级的RESTFul API接口.这些接口不但会服务于传统的web端(b/s),也会服务于 ...
- 从零开始的SpringBoot项目 ( 四 ) 整合mybatis
一.创建一个SpringBoot项目 从零开始的SpringBoot项目 ( 二 ) 使用IDEA创建一个SpringBoot项目 二.引入相关依赖 <!--mysql数据库驱动--> & ...
- 从零开始,跟我一起做jblog项目(二)Maven
从零开始,跟我一起做jblog项目(一)引言 从零开始,跟我一起做jblog项目(二)Maven maven是一个项目管理工具,尤其适用于JAVA世界 在jblog的开发前期,还没有系统使用过mave ...
- 跟着视频做的SSH项目总结
一直没做过SSH(Struts2+Spring+Hibernate)的实际项目,只是三个框架学的还熟练,但整合起来使用就不知道了.所以前段时间在网上找了一套SSH实际项目的视频来学习(确切的说是买的. ...
- 从零开始,跟我一起做jblog项目(三)从Maven到Gradle
http://www.cnblogs.com/newflydd/p/4972922.html?utm_source=tuicool&utm_medium=referral ********** ...
- 从零开始,跟我一起做jblog项目(一)引言
从零开始,跟我一起做jblog项目(一)引言 想做一个java版的blog,源自一个很久之前的想法 当时刚学习JAVA的web编程 想买自己的域名,自己的VPS,安装自己的WEB服务 用google ...
- 从零开始学Xamarin.Forms(二) 环境搭建、创建项目
原文:从零开始学Xamarin.Forms(二) 环境搭建.创建项目 一.环境搭建 Windows下环境搭建: 1.下载并安装jdk.Android SDK和NDK,当然还需要 VS2013 ...
随机推荐
- linux上抓包
使用tcpdump命令. 使用tcpdump -help查看其用法. -i eth0:在第一块网卡上进行抓包. -w filename.cap:将抓的保存到当前目录下的filename.cap文件中, ...
- 【Android】Android之USB
[转载请注明出处] 首先介绍一个概念:USB Host and Accessory Android通过两种模式支持一系列的USB外围设备和Android USB附件(实现了Android附件协议的硬件 ...
- HDU 5643 King's Game | 约瑟夫环变形
经典约瑟夫环 }; ; i<=n; i++) { f[i] = (f[i-] + k) % i; } 变形:k是变化的 #include <iostream> #include &l ...
- [洛谷P1822] 魔法指纹
洛谷题目连接:魔法指纹 题目描述 对于任意一个至少两位的正整数n,按如下方式定义magic(n):将n按十进制顺序写下来,依次对相邻两个数写下差的绝对值.这样,得到了一个新数,去掉前导0,则定义为ma ...
- Scala环境安装设置
Scala语言可以安装在任何类UNIX或Windows系统.要安装Scala,必须先安装Java1.5或更高版本安装在计算机上. Windows上安装Scala: 步骤(1):JAVA设置: 首先,必 ...
- 初识Webx 1
Webx是一套基于Java Servlet API的通用Web框架.它在Alibaba集团内部被广泛使用.从2010年底,向社会开放源码. Webx框架是一个稳定.强大的Web框架.建立在Spring ...
- Python遍历文件夹和读写文件的方法
需 求 分 析 1.读取指定目录下的所有文件2.读取指定文件,输出文件内容3.创建一个文件并保存到指定目录 实 现 过 程 Python写代码简洁高效,实现以上功能仅用了40行左右的代码~ 昨天用Ja ...
- Idea Ant 打开发包
简介: http://ju.outofmemory.cn/entry/19239 语法: https://wenku.baidu.com/view/a0e00315866fb84ae45c8d9d.h ...
- 【BZOJ4819】【SDOI2017】新生舞会 [费用流][分数规划]
新生舞会 Time Limit: 10 Sec Memory Limit: 128 MB[Submit][Status][Discuss] Description 学校组织了一次新生舞会,Cathy ...
- COGS1882 [国家集训队2011]单选错位
★ 输入文件:nt2011_exp.in 输出文件:nt2011_exp.out 简单对比时间限制:1 s 内存限制:512 MB [试题来源] 2011中国国家集训队命题答辩 [问题 ...