写了三个月个C/C++ 终于回到我最爱的Java了 ~~本来想继续钻研JSP的^^ 但是最近有个朋友要我帮他做一个期末考试的设计--类似抽奖性质的东东 哎~~胜情难却啊~~反正闲着也是闲着~~~一看并不难 读后台数据都是用TXT文档读取的,三下五除二,一个下午就搞定了。写完后发现越想越像玩具,于是狠一下心 用hibernate和MySQL重新写了一遍 正好我也可以学习下我以前没有学过的Hibernate 虽然只学到了点皮毛 但是怎么说也是我一个下午的心得嘛.......
首先我来介绍下本软件的主界面
按下开始Button 系统就会自动开始快速更改上方的准获奖人的信息(汗...)开始buttion就会变成停止button 哈哈~~
然后向大家展示 后台操作界面:
后台操作界面的三个Button 已经不需要我多叙述了吧 JList会显示准获奖人的信息来给用户操作
下面进入正题 如何用hibernate而不是jdbc来操作上述数据库呢????
我先介绍下我的数据库 BallotSystem---- Table:ballot
int id(主键) , CHAR Name, CHAR Tel (数据库简单吧^^ 3个属性)
1.首先我们需要定义一个class来表示表中的属性(我的理解通俗的说 一个对象表示一张表 对象的属性表示表的属性,把数据库给OO化了,不知道这样的解释对不对)
2.其次我们要定义映射文件XXX.hbm.xml 需要让class和数据库的TABLE联系起来呀~~所以 每一个类就要有一个映射文件对应每个表
3.配置文件......hibernate.cfg.xml 这是Hibernate的核心哦,里面定义了连接数据库的一些参数 具体我上传的代码中自己去看吧 我觉得每个都千篇一律 很好理解
好 根据我的软件 我只要执行三种操作就可以了~~~1.查询 2.插入 3.删除 我们一个一个来叙述
首先 1查询 下面我查询的部分源代码:
package com.Condey.UpdateBallot;
import com.Condey.BallotSystem.BallotMainInterface;
import com.Condey.UpdateBallot.UserInfo;
import java.util.Iterator;
import java.util.List;
import org.hibernate.*;
import org.hibernate.cfg.*;
public class UpdateBallotMain{
private BallotMainInterface MyManageMain;
List list;
private Iterator it;
SessionFactory sessions;
Session session;
public UpdateBallotMain(BallotMainInterface NowManage)
{
MyManageMain = NowManage;
ConnectTable();
}
private void ConnectTable()
{
sessions = new Configuration().configure().buildSessionFactory();
session = sessions.openSession();
try{
Query query = session.createQuery("from UserInfo");
list = query.list();
it = list.iterator();
}catch(HibernateException e)
{
e.printStackTrace();
}
finally
{
session.close();
sessions.close();
}
}
}
首先 定义SessionFactory与Session 然后用query定义查训 这里跟传统的SQL语句不一样 这里直接操作的是类 你看UserInfo是我定义的类名 因为他实现就关联好了 这样就可以直接操作对象而不用去关心什么数据库啊~~
查询结果自然保存到Iterator上(也可以保存到别的地方 看你用处^^) 具体以后要杀要剐 随便你 记得要关闭session这些东西哦~~
2.插入(那就更简单了)
插入要注意一点就是使用事务 这样可以回滚 免得出了问题找不到人哭...呵呵
public class UpdateManageAdd {
private ManageAdd MyManageMain;
SessionFactory sessions;
Session session;
public UpdateManageAdd(ManageAdd NowManage)
{
MyManageMain = NowManage;
}
public void AddName(String Name,String Tel)
{
sessions = new Configuration().configure().buildSessionFactory();
session = sessions.openSession();
Transaction tx = null;
try
{
tx = session.beginTransaction();
UserInfo u = new UserInfo();
System.out.printf(Name+" "+Tel);
u.setName(Name);
u.setTel(Tel);
session.save(u);
tx.commit();
tx = null;
}catch(Exception e)
{
e.printStackTrace();
if(tx != null)
{
tx.rollback();
}
}finally
{
session.close();
sessions.close();
}
}
}
UserInfo u = new UserInfo() 就是初始化对象 就相当于初始化了一个表中的元组嘛 而后SAVE一下 就可以了 呵呵 UserInfo中一些set方法是自己定义的 意思就跟名字一样
3.删除
这个东西够恶心了 至少我试的结果(不好意思 只试过不超过5次)必须一条条读出来再匹配再删除 如果有好的方法 别打我..我是初学者 还望你多多指教
别的不说 看代码
public class UpdateManageDel {
private ManageMain MyManageMain;
List list;
private Iterator it;
SessionFactory sessions;
Session session;
public UpdateManageDel(ManageMain NowManage)
{
MyManageMain = NowManage;
}
public void Del(java.lang.String DelString)
{
///////////////分割字符串//////////////////////////
String[] NT = DelString.split(" ");
String DName = NT[0];
String DTel = NT[1];
System.out.println(DName+"\n");
System.out.println(DTel+"\n");
sessions = new Configuration().configure().buildSessionFactory();
session = sessions.openSession();
Transaction tx = null;
try
{
tx = session.beginTransaction();
UserInfo u = new UserInfo();
String hql = " from UserInfo";
Query query = session.createQuery(hql);
list = query.list();
it = list.iterator();
while(it.hasNext())
{
u = (UserInfo)it.next();
if(u.getName().equals(DName) && u.getTel().equals(DTel))
{
session.delete(u);
break;
}
}
tx.commit();
tx = null;
}catch(Exception e)
{
e.printStackTrace();
if(tx != null)
{
tx.rollback();
}
}finally
{
session.close();
sessions.close();
}
}
}
匹配之后通过Delete之后就可以了~~哈哈 如果有10万条数据呢 还望高手指点我 我以后如果有突破 会及时更新的方法的。
第一次在JAVAEYE上写博客 虽然程序很小 也是个人的心得嘛 如果有什么指导 我虚心接受
当然数据库我就不传了 自己定义吧~~~。推荐一本 人民邮电出版社的 Hibernate3.0-Java数据库持久层开发实践
- 大小: 5.1 KB
- 大小: 2.8 KB
分享到:
相关推荐
《Hibernate HelloWorld:初识持久化框架的奥秘》 Hibernate,作为Java领域中的一款主流对象关系映射(ORM)框架,极大地简化了数据库操作。它允许开发者使用面向对象的方式来处理数据库,而无需直接编写SQL语句,...
总体而言,《Hibernate - 符合Java习惯的关系数据库持久化》为Java后端开发人员提供了一套全面的指南,涵盖了从初识Hibernate到高级特性的所有关键点,对于希望掌握和使用Hibernate进行数据库操作的开发者来说,是一...
《Hibernate Tools 4.1.1:提升数据库与对象映射的效率》 Hibernate Tools是...无论你是初识Hibernate的新手还是经验丰富的老手,这个工具都能为你的开发工作带来实质性的帮助,降低项目复杂度,提升开发速度。
IoT-Camera学习笔记之初识IoT-Camera
01初识Scratch-游来游去的小鱼
【Oracle安装-卸载-初识Oracle-笔记】 Oracle是一种广泛应用的关系型数据库管理系统,尤其在企业级应用中占据重要地位。对于初次接触Oracle的人来说,理解其安装、卸载过程及基本操作是至关重要的。 一、下载地址 ...
【初识C语言 - 复习】 C语言是一种强大的、结构化的编程语言,它以其高效、灵活和可移植性而闻名。本复习资料旨在帮助初学者巩固C语言的基础知识,以便更好地理解和应用这一编程工具。 一、C语言概述 C语言由...
025-数据类型-小整数地址 026-数据类型-知识总结 027-数据类型-本章练习 028-运算符-算数运算符 029-运算符-赋值运算符 030-运算符-比较运算符 031-运算符-逻辑运算符 032-运算符-位运算符 ......
1、hive的产生背景 2、hive的定义 3、hive的本地安装 4、hive的基本类型 5、hive的基本命令
初识Firebug全文--Firebug的使用.mht初识Firebug全文--Firebug的使用.mht初识Firebug全文--Firebug的使用.mht初识Firebug全文--Firebug的使用.mht初识Firebug全文--Firebug的使用.mht初识Firebug全文--Firebug的使用...
【标题】:“初识PLC-认识FXN系列PLC共8页.pdf.zip”提示我们,这个压缩包文件包含了一份关于初步了解可编程逻辑控制器(PLC)的文档,特别是针对FXN系列的PLC。FXN系列是三菱电机推出的 PLC 产品线,常见于工业自动...
04-requests进阶-初识反爬 03-数据解析 02-爬虫概念 01-Python基础 6.9 Scrapy处理翻页与实现模拟登录1 .mp4 817.6MB 6.8 Scrapy实战案例一1 .mp4 694.7MB 6.7 Scrapy基本使用入门 .mp4 1.9GB 6.6 MongoDB...
标题“初识PLC-PLC性能共28页.pdf.zip”表明这是一份关于可编程逻辑控制器(Programmable Logic Controller,简称PLC)的初级介绍,重点聚焦在PLC的性能特性上。文档包含28页的内容,通常会涵盖基础概念、工作原理、...
本项目“初识MFC-MFC视频播放器”是基于MFC实现的一个简单视频播放器,适用于学习和理解如何在Windows环境中用C++开发视频播放软件。 1. MFC基础 MFC由一系列的类组成,这些类代表了Windows操作系统中的各种对象,...
初识CMMI3.ppt可能是这个压缩包中的核心内容,它可能涵盖了CMMI的基本概念、各个级别的详细解释、实施CMMI的步骤、评估方法等内容。通过学习这份教材,读者可以全面了解CMMI体系,为组织引入CMMI做好准备。 总的来...
这篇初识计算机的内容主要针对小学三年级的学生,旨在引导他们认识计算机的基础知识。 首先,计算机的种类有三种基本类型:台式计算机、便携式计算机(笔记本电脑)和掌上计算机(掌上电脑)。台式计算机通常用于...
【初识Visual Basic .NET】 Visual Basic .NET(VB.NET)是Microsoft公司在.NET Framework框架下推出的一种面向对象的编程语言,它继承了Visual Basic的传统语法,并融入了现代编程语言的特点,使得开发者能够更高效...
windows
初识 Rosetta Workshop 课件 1 - Introduction (英文版) 在这篇课件中,我们将介绍 Rosetta 的基本概念和使用方法,包括如何运行基本的 Rosetta 应用程序、输入/输出文件类型、选项等,以及如何导航 Rosetta。 ...