`
condeywadl
  • 浏览: 78476 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

初识Hibernate-- 抽奖小系统

    博客分类:
  • Java
阅读更多

   写了三个月个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
3
2
分享到:
评论

相关推荐

    hibernate-helloworld

    《Hibernate HelloWorld:初识持久化框架的奥秘》 Hibernate,作为Java领域中的一款主流对象关系映射(ORM)框架,极大地简化了数据库操作。它允许开发者使用面向对象的方式来处理数据库,而无需直接编写SQL语句,...

    HIBERNATE - 符合Java习惯的关系数据库持久化.doc

    总体而言,《Hibernate - 符合Java习惯的关系数据库持久化》为Java后端开发人员提供了一套全面的指南,涵盖了从初识Hibernate到高级特性的所有关键点,对于希望掌握和使用Hibernate进行数据库操作的开发者来说,是一...

    hibernatetools-Update-4.1.1.zip

    《Hibernate Tools 4.1.1:提升数据库与对象映射的效率》 Hibernate Tools是...无论你是初识Hibernate的新手还是经验丰富的老手,这个工具都能为你的开发工作带来实质性的帮助,降低项目复杂度,提升开发速度。

    IoT-Camera学习笔记之初识IoT-Camera

    IoT-Camera学习笔记之初识IoT-Camera

    01初识Scratch-游来游去的小鱼.pdf

    01初识Scratch-游来游去的小鱼

    oracle安装-卸载-初识oracle-笔记

    【Oracle安装-卸载-初识Oracle-笔记】 Oracle是一种广泛应用的关系型数据库管理系统,尤其在企业级应用中占据重要地位。对于初次接触Oracle的人来说,理解其安装、卸载过程及基本操作是至关重要的。 一、下载地址 ...

    初识C语言 - 复习.zip

    【初识C语言 - 复习】 C语言是一种强大的、结构化的编程语言,它以其高效、灵活和可移植性而闻名。本复习资料旨在帮助初学者巩固C语言的基础知识,以便更好地理解和应用这一编程工具。 一、C语言概述 C语言由...

    2024最新Python视频,附课件、代码及软件.zip

    025-数据类型-小整数地址 026-数据类型-知识总结 027-数据类型-本章练习 028-运算符-算数运算符 029-运算符-赋值运算符 030-运算符-比较运算符 031-运算符-逻辑运算符 032-运算符-位运算符 ......

    初识Hive--精华

    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的使用.mht初识Firebug全文--Firebug的使用...

    初识PLC-认识FXN系列PLC共8页.pdf.zip

    【标题】:“初识PLC-认识FXN系列PLC共8页.pdf.zip”提示我们,这个压缩包文件包含了一份关于初步了解可编程逻辑控制器(PLC)的文档,特别是针对FXN系列的PLC。FXN系列是三菱电机推出的 PLC 产品线,常见于工业自动...

    Python爬虫超级大神班-requests进阶-初识反爬- Scrapy处理翻页与实现模拟登录

    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

    标题“初识PLC-PLC性能共28页.pdf.zip”表明这是一份关于可编程逻辑控制器(Programmable Logic Controller,简称PLC)的初级介绍,重点聚焦在PLC的性能特性上。文档包含28页的内容,通常会涵盖基础概念、工作原理、...

    初识MFC-MFC视频播放器.rar_MFC视频播放器_mfc 播放视频_mfc播放器_视频播放_视频播放器

    本项目“初识MFC-MFC视频播放器”是基于MFC实现的一个简单视频播放器,适用于学习和理解如何在Windows环境中用C++开发视频播放软件。 1. MFC基础 MFC由一系列的类组成,这些类代表了Windows操作系统中的各种对象,...

    初识CMMI-培训教材

    初识CMMI3.ppt可能是这个压缩包中的核心内容,它可能涵盖了CMMI的基本概念、各个级别的详细解释、实施CMMI的步骤、评估方法等内容。通过学习这份教材,读者可以全面了解CMMI体系,为组织引入CMMI做好准备。 总的来...

    初识计算机-PPT.ppt

    这篇初识计算机的内容主要针对小学三年级的学生,旨在引导他们认识计算机的基础知识。 首先,计算机的种类有三种基本类型:台式计算机、便携式计算机(笔记本电脑)和掌上计算机(掌上电脑)。台式计算机通常用于...

    第1章-初识Visual-Basic-NETppt课件(全).ppt

    【初识Visual Basic .NET】 Visual Basic .NET(VB.NET)是Microsoft公司在.NET Framework框架下推出的一种面向对象的编程语言,它继承了Visual Basic的传统语法,并融入了现代编程语言的特点,使得开发者能够更高效...

    《初识windows--XP》参考教案1.doc

    windows

    初识rosetta-workshop课件1-introduction(英文版)

    初识 Rosetta Workshop 课件 1 - Introduction (英文版) 在这篇课件中,我们将介绍 Rosetta 的基本概念和使用方法,包括如何运行基本的 Rosetta 应用程序、输入/输出文件类型、选项等,以及如何导航 Rosetta。 ...

Global site tag (gtag.js) - Google Analytics