`

Hibernate增删改查数据库之一DAO类

阅读更多

/*使用了自己封装的HibernateUtils工具类(该类详见之二篇日志)*/
public class SessionTest extends TestCase {
/**
  * 1.DESC--利用save()方法插入一条数据到数据库
  */
public void testSave(){
  Session session = null;
  User user = null;
  //实例化POJO对象
  user = new User();//@@@此时的user对象为瞬时对象状态@@@
  user.setName("xxx");
  user.setPassword("asb");
  user.setCteateTime(new Date());
  try{
   //获取session对象(调用HibernateUtils工具类)
   session=HibernateUtils.getSession();
   //开启事物
   HibernateUtils.openTransaction();
   //调用save(object)方法将持久化对象保存到数据库中(插入数据)
   session.save(user);//@@@此时的user对象为持久化对象状态@@@
   user.setName("update");
   session.update(user);//(更新数据)
   //提交事物
   HibernateUtils.commitTransaction();
  }catch(Exception e){
   //回滚事物
   HibernateUtils.rollbackTransation();
   e.printStackTrace();
  }finally{
   //关闭session对象
   HibernateUtils.closeSession(session);
  }
}
/**
  * 2.DESC--利用get()方法按主键查询数据库中的一条记录
  *   总结:get()不是延迟加载数据,当数据库无匹配数据时候,返回NULL
  *   技巧:判断是否查到指定主键的数据,只需要判断User对象是否为空
  */
public void testGet(){
  Session session = null;
  //创建session对象
  session = HibernateUtils.getSession();
  //开启事物
  HibernateUtils.openTransaction();
  //调用get()方法(按指定ID)
  User user = (User)session.get(User.class,"402880d51c6b345e011c6b34608d0001");
  //提交事物
  HibernateUtils.commitTransaction();
  if(user!=null){
   System.out.println("user.name=="+user.getName());
  }else{
   System.out.println("数据库中无与之匹配的数据!");
  }
  //关闭Session对象
  HibernateUtils.closeSession(session);
}
/**
  * 3.DESC--利用load()方法按主键查询数据库中的一条记录
  *   总结:get()是延迟加载数据,当数据库无匹配数据时候,返回ObjectNotFoundException异常
  *   技巧:判断是否查到指定主键的数据,只需要看是否抛出异常
  */
public void testLoad(){
  Session session = null;
  try{
   //创建session对象
   session = HibernateUtils.getSession();
  
   //调用load方法(按指定ID)
   User user = (User)session.load(User.class,"402880d51c6b345e011c6b34608d0001");
   //提交事物
   HibernateUtils.commitTransaction();
   System.out.println("user.name=="+user.getName());
  }catch(Exception e){
   System.out.println("数据库中无与之匹配的数据!");
  }finally{
   //关闭Session对象
   HibernateUtils.closeSession(session);
  }
}
/**
  * 3.DESC--利用delet()方法按主键删除数据库中的一条记录
  *   技巧:先用load()查出该条记录,然后调用delete()删除
  *   重点:要开启提交事物,否则删除不了
  */
public void testDelete(){
  Session session = null;
  try{
   //创建session对象
   session = HibernateUtils.getSession();
   //开启事物
   HibernateUtils.openTransaction();
   //调用load方法(按指定ID)
   User user = (User)session.load(User.class,"402880d51c6b345e011c6b34608d0001");
   session.delete(user);
   //提交事物
   HibernateUtils.commitTransaction();
  }catch(Exception e){
   System.out.println("删除失败-->数据库中无与之匹配的数据!");
  }finally{
   //关闭Session对象
   HibernateUtils.closeSession(session);
  }
}
}
分享到:
评论
1 楼 andey007518 2009-07-27  
这样就完了吗?有没有具体的好的思路呢

相关推荐

    java数据库增删改查操作实例(hibernate原理)

    写了一个通用java访问数据库操作的DAO类,非常简单,非常强大,非常方便,非常好用。绝对原版,绝对原创。把hibernate彻底扔掉。(根据C#改编的,原本我是搞C#开发的)

    hibernate实现User的增删改查

    User实体(id, name, age, sex, ctime),使用hibernate实现User的增删改查。要求: 1、包的层次: com.xxx.entity, com.xxx.dao, com.xxx.dao.impl.hql, com.xxx.dao.impl.qbc, com.xxx.dao.impl.sql, ...

    Maven+Hibernate+mysql增删改查

    Maven+Hibernate+mysql增删改查 ,希望对刚学习通许有所帮助

    java数据库增删改查操作实例(hibernate原理)支持泛型集合

    写了一个通用java访问数据库操作的DAO类,非常简单,非常强大,非常方便,非常好用。绝对原版,绝对原创。把hibernate彻底扔掉。(根据C#改编的,原本我是搞C#开发的)支持泛型集合,让程序运行效率更高。

    SSH增删改查实例

    架子,写实体类,写dao层,实现dao层, 如果是struts2就要有action, 配置struts.xml实现跳转。 配置hibernate,和hbm与数据库映射, 将spring搭建好, 管理struts和hibernate。管理事务。

    JavaWeb程序设计_实验6.rar

    2、确定项目的 DAO 模型,开发相应类,在该类中实现增删改查的相应操 作。3、编写公共的数据库连接类 DBCon 类,在 DAO 中使用 DBCon 提供的数 据库连接。 4、编写控制器类 Servlet,在其中加入对 DAO 对象的调用,...

    BeetlSQL数据库访问框架是一个全功能 DAO 工具,同时具有 Hibernate.rar

    在开发效率上,无需注解,自动使用大量内置SQL,轻易完成增删改查功能。数据模型支持Pojo,也支持Map/List这种快速模型,也支持混合模型。SQL 模板基于Beetl实现,更容易写和调试,以及扩展。可以针对单个表(或者...

    一个很好的通用泛型dao(含源码)

    为什么我们要使用通用DAO接口呢,因为我们的数据库操作无非是增删改查,CRUD操作,我们不需要为每个实体去编写一个dao接口,对于相似的实体操作可以只编写一个通用接口,然后采用不同的实现! DAO已经成为持久层...

    SpringBoot使用Spring-data-jpa简化数据访问层

    为了解决抽象各个Java实体基本的“增删改查”操作,我们通常会以泛型的方式封装一个模板Dao来进行抽象简化,但是这样依然不是很方便,我们需要针对每个实体编写一个继承自泛型模板Dao的接口,再编写该接口的实现。...

    使用Struts+Spring+Hibernate整合开发例子

    先配置mysql数据驱动,打开eclipse database explorer perspective,选择tie数据库中的user表,创建hibernate Reverse Engineering 生成vo,还可以生成dao。 5. 这样框架就加载完毕了。下面就是SSH的整合了,首先...

    ERP CRM SCM 等系统开发框架

    也可以通过RMI,支持分布式网站系统,电商平台,手机app服务器 Dao数据操作仅仅增删改查,没有特殊需求,不需要写Dao接口和Dao实现类,用下面这种引入方式: @DataAccess(entity = RolePo.class) private CommonDao,...

    JSF1.2+EJB3.0实现的一个项目实例

    ejb端 jsfejb3-ejb |-- src |-- org.qiujy.ejb3.dao 持久层DAO接口包 |-- org.qiujy.ejb3.dao.impl 持久层DAO接口实现类包(是ejb3中的会话Bean) |-- org.qiujy.ejb3.entity 实体域模型类包...

    Struts2+Hibernate3+Spring2.5整合详细步骤+实例可运行代码

    1. word文档记录了Struts2+Hibernate3+Spring2.5整合...2. 源代码实例包括一个完整模块的增删改查操作,可直接运行,可以在此基础上直接进行自己系统的开发;注意其中含有MySQL数据库的表文件(SQLyog客户端保存)。

    java代码自动生成器(根据数据库生成数据库操作代码)

    是一个以spring为核心的项目脚手架(或者称为胶水框架),框架将各个零散的框架(struts,strust2,springmvc,hibernate,ibatis,spring_jdbc,flex)...dao,manager,struts+struts2 action类,可以生成jsp的增删改查及列表页面

    自动代码生成

    service 及其 实现类:提供了增删改查的基本的方法 controller:提供了增删改查的基本的方法 由于代码难度比较一般,各位可以下载查看,地址会放在后面。 只需要配置两个文件即可运行,①数据库连接文件 ②生成文件...

    Struts2SpringHibernate整合,一个HelloWorld版的在线书店(项目源码+详尽注释+单元测试)

    dao:数据访问层,数据库增删改查接口。 domain:领域实体。 util:工具类。 实体 Book:书籍,一本书,比如“《编写可读代码的艺术》”。 BookCategory:书籍分类,比如“管理”、“计算机”。 BookComment:...

    基于SpringBoot+Hibernate+Shiro的库存管理系统+源代码+文档说明

    * 数据持久层使用SpringBoot自带的Hibernate来维护PO(Persistent Object持久化对象),这里使用Hibernate的原因在于其三种对象状态(持久态、游离态、分割态)便于持久化对象的增删改查等一系列操作,取代了jdbc的...

    Maven Struts-Spring-Hibernate全注解示例

    一、部分软件/库版本 Maven:3.0.5 struts2.2.3-spring3.0.6-hibernate3.6.6 二、Demo功能(导入sql可直接运行) 1.数据库文件doc/db.sql ... 实现了对任何通用CRUD(增删改查)操作,不用写任何Service/Dao层代码

    BeetlSQL DAO工具-其他

    BeetlSQL是一个全功能 DAO 工具,...内置常见增删改查功能,节省项目50%工作量 2、全面支持跨数据库平台 3、支持一对一,一对多等常见的ORM映射 4、其他 具备代码生成功能 主从支持 支持Interceptor,如Debug,Cache等

    SpringMVC、Spring、Hibernate经典demo

    SpringMVC、Spring、Hibernate经典demo,数据库:msyql,里面包含源码,可以直接运行,用增、删、改、查和登录功能,有效验功能,dao层和service都用用到泛型写的,非常值得参考~,希望下载的朋友都能学到SpringMVC的...

Global site tag (gtag.js) - Google Analytics