`
zu99
  • 浏览: 8479 次
  • 性别: Icon_minigender_2
  • 来自: 长沙
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

eclipse下生成Hibernate DAO中的几个方法

阅读更多
* save()方法提供了向数据库中添加数据的功能,但只能添加,这个DAO没有生成Update()的方法
* 但你可以简单的把save()方法改称具有Update功能:将getSession().save  (transientInstance);这句改成
* getSession().merge(transientInstance);或者getSession().saveOrUpdate
*   (transientInstance);

public void save(User transientInstance) {
   log.debug("saving User instance");
   try {
    Session session=getSession();
    Transaction tx=session.beginTransaction();
    session.save(transientInstance);
    tx.commit();
    session.close();
    log.debug("save successful");
   } catch (RuntimeException re) {
    log.error("save failed", re);
    throw re;
   }
}


delete()方法用来删除的 实际上我们会用下边的这个方法进行删除

public void delete(Integer id){
   log.debug("deleting User instance...");
   User user=findById(id);
   delete(user);
}

public void delete(User persistentInstance) {
   log.debug("deleting User instance");
   try {
    Session session=getSession();
    Transaction tx=session.beginTransaction();
    session.delete(persistentInstance);
    tx.commit();
    session.close();
    log.debug("delete successful");
   } catch (RuntimeException re) {
    log.error("delete failed", re);
    throw re;
   }
}

根据编号进行查找

public User findById(java.lang.Integer id) {
   log.debug("getting User instance with id: " + id);
   try {
    User instance = (User) getSession().get("hbm.User", id);
    return instance;
   } catch (RuntimeException re) {
    log.error("get failed", re);
    throw re;
   }
}

findByExample()方法实现的功能相当于"select * from Usertable"实现的功能就是查询所有 数据.


public List findByExample(User instance) {
   log.debug("finding User instance by example");
   try {
    List results = getSession().createCriteria("hbm.User").add(
      Example.create(instance)).list();
    log.debug("find by example successful, result size: "
      + results.size());
    return results;
   } catch (RuntimeException re) {
    log.error("find by example failed", re);
    throw re;
   }
}

findByProperty()方法用来灵活的提供一种按条件查询的方法,你可以自己定义要按什么样的方 式查询.


public List findByProperty(String propertyName, Object value) {
   log.debug("finding User instance with property: " + propertyName
     + ", value: " + value);
   try {
    String queryString = "from User as model where model."
      + propertyName + "= ?";
    Query queryObject = getSession().createQuery(queryString);
    queryObject.setParameter(0, value);
    return queryObject.list();
   } catch (RuntimeException re) {
    log.error("find by property name failed", re);
    throw re;
   }
}


public List findByName(Object name) {
   return findByProperty(NAME, name);
}

public List findBySex(Object sex) {
   return findByProperty(SEX, sex);
}

public List findByAge(Object age) {
   return findByProperty(AGE, age);
}

public List findAll() {
   log.debug("finding all User instances");
   try {
    String queryString = "from User";
    Query queryObject = getSession().createQuery(queryString);
    return queryObject.list();
   } catch (RuntimeException re) {
    log.error("find all failed", re);
    throw re;
   }
}

将传入的detached状态的对象的属性复制到持久化对象中,并返回该持久化对象   如果该session中没有关联的持久化对象,加载一个,如果传入对象未保存,保存一个副本并作为持久对象返回,传入对象依然保持detached状态。

可以用作更新数据


public User merge(User detachedInstance) {
   log.debug("merging User instance");
   try {

    Session session=getSession();
    Transaction tx=session.beginTransaction();
  
    User result = (User) session.merge(detachedInstance);
    tx.commit();
    session.close();
    log.debug("merge successful");
    return result;
   } catch (RuntimeException re) {
    log.error("merge failed", re);
    throw re;
   }
}

将传入的对象持久化并保存。 如果对象未保存(Transient状态),调用save方法保存。如果对象已保存(Detached状态),调用update方法将对象与Session重新关联。

public void attachDirty(User instance) {
   log.debug("attaching dirty User instance");
   try {
    getSession().saveOrUpdate(instance);
    log.debug("attach successful");
   } catch (RuntimeException re) {
    log.error("attach failed", re);
    throw re;
   }
}

将传入的对象状态设置为Transient状态


public void attachClean(User instance) {
   log.debug("attaching clean User instance");
   try {
    getSession().lock(instance, LockMode.NONE);
    log.debug("attach successful");
   } catch (RuntimeException re) {
    log.error("attach failed", re);
    throw re;
   }
}
分享到:
评论

相关推荐

    使用模式设计及java5新特性在HibernateDAO中的应用

    标题 "使用模式设计及java5新特性在HibernateDAO中的应用" 涉及到的是软件开发中的几个关键概念,包括模式设计、Java 5的新特性以及它们如何在Hibernate DAO层中得到应用。在这个主题中,我们将深入探讨这些知识点,...

    5分钟利用Myeclipse快速搭建ssh(JPA)环境,自动生成dao,model

    2. **创建表**:在“school”数据库中创建几个表来存放数据,例如学生表、教师表等。 #### 第二步:创建Web项目 1. **新建Web项目**:在MyEclipse中新建一个Web项目,命名为“sshExample”。 2. **添加Struts2支持*...

    struts+hibernate入门实例(eclipse版)

    在本章节中,作者朱千平将引导我们完成开发环境的搭建,包括以下几个步骤: 1. **下载安装Eclipse**: Eclipse 是一个开源的集成开发环境(IDE),非常适合 Java 开发。确保下载最新版本的 Eclipse,并根据操作系统...

    精通J2EE--Eclipse、Struts、Hibernate及Spring整合应用案例第3章

    它主要解决以下几个关键问题: 1. 数据库访问层(DAO)的简化,Hibernate通过提供一个统一的API来处理所有数据库操作,使得开发者不需要编写大量重复的数据库访问代码。 2. 数据库连接的管理,Hibernate内部使用...

    hibernate tools源码运行或修改需要的jar

    2. **Hibernate Tools**:作为Hibernate的一部分,它提供了与IDE集成的插件,如Eclipse和IntelliJ IDEA,帮助开发者生成和维护Hibernate相关的代码,比如实体类、映射文件、DAO层代码等。 3. **源码获取**:从描述...

    Hibernate反向工程

    在Hibernate反向工程中,主要涉及以下几个关键知识点: 1. **Hibernate框架**:Hibernate是一个优秀的Java持久化框架,它提供了一种在Java应用中管理和存储数据到关系数据库的解决方案。它简化了数据库操作,通过...

    为xdoclet添加hibernate智能提示

    在IT行业中,XDoclet和...总的来说,这个主题涵盖了Java企业级开发中的几个重要方面:使用XDoclet自动化持久层代码生成,通过Hibernate实现ORM,以及事务管理确保数据安全。掌握这些知识将大大提高开发效率和代码质量。

    Java代码生成工具 绿色版_生成Struts2.1.8,Spring2.5,Hibernate3代码

    Java代码生成工具是一种高效开发辅助软件,主要用于自动化生成基于Java技术栈的Web应用程序代码,尤其针对Struts2.1.8、Spring2.5和Hibernate3这三个经典框架的集成应用。这样的工具能够显著提高开发效率,减少手动...

    HibernateCore的代码生成、逆向工程、ant任务和更多工具___下载.zip

    在本文中,我们将深入探讨 Hibernate Core 的几个关键功能:代码生成、逆向工程、Ant 任务以及相关工具的使用。 1. **代码生成**: Hibernate 提供了一套工具,可以自动生成基于数据库模式的Java实体类、Hibernate...

    MyEclipse_Hibernate_Quickstart

    具体来说,本教程涵盖了以下几个方面: - 如何在Java项目中添加MyEclipse Hibernate支持。 - 如何为项目创建Hibernate配置文件。 - 如何使用自定义的SessionFactory。 - 如何从Database Explorer中的表定义生成Java...

    Hibernate4.1环境搭建

    - 如果使用了Hibernate的逆向工程来生成实体类和映射文件,需要注意以下几点: - 在`web.xml`中添加如下过滤器配置: ```xml <filter-name>HibernateOpenSession <filter-class>org.springframework.orm....

    Hibernate 资料

    安装Hibernate通常包括以下几个步骤: 1. 下载Hibernate JAR文件,并将其添加到项目的类路径中。 2. 创建`hibernate.cfg.xml`配置文件,设置数据库连接信息,如URL、用户名、密码、驱动等。 3. 编写实体类和映射文件...

    HibernateTools-3.2.4.Beta1-R200810311334

    **代码生成(Code Generation)**:对于新创建的实体类,你可以使用插件生成Hibernate的配置文件和相应的DAO层代码,这大大减少了手动编写的工作量。 **数据库浏览(Database Browser)**:在Eclipse中可以直接打开...

    利用MyEclipse开发Struts+Hibernate应用

    6. **开发流程**:一般来说,开发流程包括以下几个步骤: - 创建MyEclipse项目,导入所需的Struts和Hibernate库。 - 配置Struts的struts-config.xml和Hibernate的hibernate.cfg.xml。 - 设计并实现实体类,编写...

    精通Hibernate

    AppFuse的安装过程主要包括以下几个步骤: 1. **下载AppFuse**:首先从AppFuse的官方网站(https://appfuse.dev.java.net/)获取最新的版本。截至本书撰写时,最新版本为1.9。 2. **环境准备**:确保系统已安装J2SE...

    一种Java EE平台的代码生成方法.zip

    在Java EE开发中,代码生成方法通常包括以下几个关键知识点: 1. **模版引擎**:如FreeMarker、Thymeleaf或Velocity,它们允许开发者定义模板,并根据数据动态生成HTML、XML或Java代码。这些模版引擎能够减少重复性...

    网上书店系统(struts+hibernate)

    在需要与数据库交互时,Action会调用Hibernate的DAO方法,由Hibernate处理数据库操作。完成后,Action将结果封装为模型对象,并通过Struts的Result机制转发到相应的JSP页面进行展示。 7. **开发与调试**:开发者...

    j2ee代码生成器源代码

    J2EE代码生成器的源码通常包含以下几个主要部分: 1. **模板引擎**:代码生成器的核心组件,负责将预定义的模板转换成实际的Java代码。常见的模板引擎有FreeMarker、Velocity等,它们允许开发者用特定的语法编写...

    struts+hibernate+spring 增删改查实例

    在这个"struts+hibernate+spring 增删改查实例"中,开发者可能会看到以下几个关键组成部分: 1. **.classpath**:这是Eclipse项目中的一个文件,记录了项目的类路径信息,包括库和源文件夹。 2. **.project**:这是...

Global site tag (gtag.js) - Google Analytics