Hibernate第一次课(1)

简介:

中文转换:C:\a>native2ascii -encoding gb2312 a.properties b.properties
1 做一个JSP页面,里面只有用户名的文本框和提交按钮。当用户点击的时候
  跳转到一个Servlet。Servlet里面读取属性文件。如果用户输入的用户名和
  属性文件中的用户名匹配上,输出信息:您被禁止登陆。如果用户输入的用户名
  和属性文件中的用户名不匹配,显示欢迎XXX登陆信息。

2 做一个数据库表。里面有userid username password usertype字段。在上一题的
  基础上,如果用户输入的用户名和属性文件中的用户名不匹配,显示当前用户的用户名,
  密码,用户类型。(使用JNDI访问数据库连接池的方式连接数据库)

3 做一个自定义异常类,继承自RuntimeException类。在里面实现单参构造方法和带
  两个参数的构造方法。在程序中判断是否是自定义异常,如果是,抛出自定义的错误信息。
 

自定义异常类:
public class DBAccessException extends RuntimeException {

 protected Throwable throwable;

 public DBAccessException(String message) {
  super(message);

 }
}
调用过程:
               try { 
   Class.forName(driverClassName);
   con = DriverManager.getConnection(url, user, password);

  } catch (Exception ex) {
   throw new DBAccessException("不能取得数据库连接!");
  }
  ---------------------------------------------------------------------------------------------------------------------------

 

当要将一个对象存储在网络、硬盘、或通过流传输的时候,必须对该类实现序列化,否则不能执行以上操作!

你要传输或保存对象时,需要将对象转换成bit流, 
读取对象时,需要重新转换回来。

这样,就必需实现序列化接口。

序列化是为了存储整个对象

什么是序列化?在什么情况下将类序列化?

序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。

序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。

是对象永久化的一种机制。 
确切的说应该是对象的序列化,一般程序在运行时,产生对象,这些对象随着程序的停止运行而消失,但如果我们想把某些对象(因为是对象,所以有各自不同的特性)保存下来,在程序终止运行后,这些对象仍然存在,可以在程序再次运行时读取这些对象的值,或者在其他程序中利用这些保存下来的对象。这种情况下就要用到对象的序列化。

对象序列化的最主要的用处就是在传递,和保存对象(object)的时候,保证对象的完整性和可传递性。譬如通过网络传输,或者把一个对象保存成一个文件的时候,要实现序列化接口 。

------------------------------------------------------------------------------------------------------------------------------Hibernate 通用DAO

package dao;

import po.Users;
import po.HibernateSessionFactory;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.Query;
import java.util.;
public class Dao {

 public void add(Users user){
  
  Session session=HibernateSessionFactory.getSession();
  Transaction tx=session.beginTransaction();
  session.save(user);
  tx.commit();
  session.close();
 }
 
 public void change(){
  Session session=HibernateSessionFactory.getSession();
  Transaction tx=session.beginTransaction();
  Users user=(Users)session.get(Users.class,new Integer(1));
  user.setPassword(aaaa);
  tx.commit();
  session.close();
 }
 
 public void delete(){
  Session session=HibernateSessionFactory.getSession();
  Transaction tx=session.beginTransaction();
  Users user=(Users)session.load(Users.class, new Integer(1));
  session.delete(user);
  tx.commit();
  session.close(); 
 }

 public List find(){
  Session session=HibernateSessionFactory.getSession();
  Query query=session.createQuery(from Users u where u.usertype=123);
  ArrayList list=(ArrayList)query.list();
  return list;
 }

 public List query(int pageNo,int pageSize){
  Session session=HibernateSessionFactory.getSession();
  String sql=from  Users;
  Query query=session.createQuery(sql);
  int beginnumber=pageSize(pageNo-1);
  query.setFirstResult(beginnumber);
  query.setMaxResults(pageSize);
  List list=query.list();
  return list;
 }
 
 
}



本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/archive/2010/12/29/1921261.html,如需转载请自行联系原作者

目录
相关文章
|
运维 Linux Nacos
nacos常见问题之远程访问不报错放到服务器上nacos连接超时如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
2261 1
|
前端开发 JavaScript Java
JavaScript复制内容到剪切板 带格式的复制
JavaScript复制内容到剪切板 带格式的复制
194 0
|
7月前
|
图形学 开发者
Unity编辑器脚本(添加/删除)碰撞盒
这段代码提供了两个Unity编辑器工具,用于批量处理模型的碰撞盒。一是“一键添加所有碰撞盒”,通过选择模型的父物体,自动为其子物体添加`MeshCollider`。二是“一键清理所有Collider碰撞盒”,同样选择父物体后,递归删除子物体上的`BoxCollider`组件。两者均通过Unity的菜单项实现便捷操作,方便开发者快速调整场景中的物理属性。
|
11月前
|
数据可视化 Ubuntu 机器人
WebViz可视化工具的应用
【10月更文挑战第2天】WebViz可视化 Webviz是一个基于Web的可视化工具,意味着您可以通过浏览器/APP访问它,而不需要安装额外的软件。这对于远程访问和团队协作非常方便。 Foxglove是一个开源的工具包,包括线上和线下版。旨在简化机器人系统的开发和调试。它提供了一系列用于构建机器人应用程序的功能。 本节将介绍如何使用Foxglove进行数据查看,以及话题通信。 为了实现OriginBot与Foxglove的连接,我们需要在OriginBot上搭建ROS环境。请确保您的机器人是OriginBot(视觉版/导航版),并且您的PC运行的是Ubuntu(≥20.04)或Win
237 1
一文搞懂Go读写Excel文件
一文搞懂Go读写Excel文件
|
11月前
|
数据处理 算法框架/工具 计算机视觉
手把手教你使用YOLOV5训练自己的目标检测模型
本教程由肆十二(dejahu)撰写,详细介绍了如何使用YOLOV5训练口罩检测模型,涵盖环境配置、数据标注、模型训练、评估与使用等环节,适合大作业及毕业设计参考。提供B站视频、CSDN博客及代码资源链接,便于学习实践。
4626 1
手把手教你使用YOLOV5训练自己的目标检测模型
|
自然语言处理 关系型数据库 数据管理
阿里云百炼|析言GBI产品入门指导
析言基础入门的操作体验,带领大家一起探索阿里云百炼|析言GBI的奥秘。
3639 19
|
安全 算法 网络安全
|
机器学习/深度学习 Linux Shell
超详细的Linux-Conda环境安装教程
超详细的Linux-Conda环境安装教程
|
分布式计算 Hadoop Linux
Linux Centos 服务器免密验证(ansible版/非root用户)
Ansible中,-k或--ask-pass选项用于提示输入SSH密码。这在你需要通过SSH连接到目标主机,但又没有设置SSH密钥对的情况下非常有用。使用-k选项后,Ansible将在执行playbook或命令时提示你输入SSH密码。
677 0