从零开始做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 ...
随机推荐
- [技巧篇]10.那些年我们一起优化过的MyEclipse8.6
这里里面是针对于四海的给位学生预留的视频,请自行下载,我希望对大家有所帮助 我这里使用了百度网盘,这里的东西还是比较多的!如果喜欢请关注我,当好胖先生的粉丝 链接:http://pan.baidu.c ...
- redis.conf详细说明
daemonize yes #---默认值no,该参数用于定制redis服务是否以守护模式运行.--- pidfile /var/run/redis.pid #默认值/var/run/redis.pi ...
- Chrome浏览器启动页被360导航篡改解决方法
右键Chrome浏览器快捷方式,选择“属性”,在“目标”的结尾处有添加的网址,删了即可. 2 如果在结尾处没有任何网址,可以添加“ -nohome”,这样下次启动时,就会打开一个空白页,也就不会打开被 ...
- SQL SERVER 创建远程数据库链接 mysql oracle sqlserver
遇到的坑 在连接Oracle时,因为服务器为10g 32位版本,然后在本地安装了32为10g客户端,然后一直报错[7302.7303],后来下载了12c 64位版本,安装成功后,问题解决 原因:mss ...
- js获取链接参数
var url = location.search; var Request = new Object(); if(url.indexOf("?")!=-1){ var str = ...
- Vue组件-组件的注册
注册组件 全局组件 注册组件就是利用Vue.component()方法,先传入一个自定义组件的名字,然后传入这个组件的配置. Vue.component('my-component', { templ ...
- perl_nc.pl
#!/usr/bin/perl use strict; use IO::Socket; use IO::Select; use Getopt::Std; my %option;getopts('lp: ...
- OWASP SSL 高级审查工具
http://www.linuxidc.com/Linux/2016-03/129164.htm InfoWorld 在部署.运营和保障网络安全领域精选出了年度开源工具获奖者. 最佳开源网络和安全软件 ...
- 阿波罗11号登月飞船电脑控制系统源码(AGC)
阿波罗11号登月飞船电脑控制系统源码(AGC) http://download.csdn.net/detail/downiis6/9574926 down url: https://github.co ...
- gcc -rpath 指定动态库路径
gcc -rpath 指定动态库路径 http://blog.csdn.net/v6543210/article/details/44809405