`
- 浏览:
8479 次
- 性别:
- 来自:
长沙
-
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;
}
}
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
标题 "使用模式设计及java5新特性在HibernateDAO中的应用" 涉及到的是软件开发中的几个关键概念,包括模式设计、Java 5的新特性以及它们如何在Hibernate DAO层中得到应用。在这个主题中,我们将深入探讨这些知识点,...
2. **创建表**:在“school”数据库中创建几个表来存放数据,例如学生表、教师表等。 #### 第二步:创建Web项目 1. **新建Web项目**:在MyEclipse中新建一个Web项目,命名为“sshExample”。 2. **添加Struts2支持*...
在本章节中,作者朱千平将引导我们完成开发环境的搭建,包括以下几个步骤: 1. **下载安装Eclipse**: Eclipse 是一个开源的集成开发环境(IDE),非常适合 Java 开发。确保下载最新版本的 Eclipse,并根据操作系统...
它主要解决以下几个关键问题: 1. 数据库访问层(DAO)的简化,Hibernate通过提供一个统一的API来处理所有数据库操作,使得开发者不需要编写大量重复的数据库访问代码。 2. 数据库连接的管理,Hibernate内部使用...
2. **Hibernate Tools**:作为Hibernate的一部分,它提供了与IDE集成的插件,如Eclipse和IntelliJ IDEA,帮助开发者生成和维护Hibernate相关的代码,比如实体类、映射文件、DAO层代码等。 3. **源码获取**:从描述...
在Hibernate反向工程中,主要涉及以下几个关键知识点: 1. **Hibernate框架**:Hibernate是一个优秀的Java持久化框架,它提供了一种在Java应用中管理和存储数据到关系数据库的解决方案。它简化了数据库操作,通过...
在IT行业中,XDoclet和...总的来说,这个主题涵盖了Java企业级开发中的几个重要方面:使用XDoclet自动化持久层代码生成,通过Hibernate实现ORM,以及事务管理确保数据安全。掌握这些知识将大大提高开发效率和代码质量。
Java代码生成工具是一种高效开发辅助软件,主要用于自动化生成基于Java技术栈的Web应用程序代码,尤其针对Struts2.1.8、Spring2.5和Hibernate3这三个经典框架的集成应用。这样的工具能够显著提高开发效率,减少手动...
在本文中,我们将深入探讨 Hibernate Core 的几个关键功能:代码生成、逆向工程、Ant 任务以及相关工具的使用。 1. **代码生成**: Hibernate 提供了一套工具,可以自动生成基于数据库模式的Java实体类、Hibernate...
具体来说,本教程涵盖了以下几个方面: - 如何在Java项目中添加MyEclipse Hibernate支持。 - 如何为项目创建Hibernate配置文件。 - 如何使用自定义的SessionFactory。 - 如何从Database Explorer中的表定义生成Java...
- 如果使用了Hibernate的逆向工程来生成实体类和映射文件,需要注意以下几点: - 在`web.xml`中添加如下过滤器配置: ```xml <filter-name>HibernateOpenSession <filter-class>org.springframework.orm....
安装Hibernate通常包括以下几个步骤: 1. 下载Hibernate JAR文件,并将其添加到项目的类路径中。 2. 创建`hibernate.cfg.xml`配置文件,设置数据库连接信息,如URL、用户名、密码、驱动等。 3. 编写实体类和映射文件...
**代码生成(Code Generation)**:对于新创建的实体类,你可以使用插件生成Hibernate的配置文件和相应的DAO层代码,这大大减少了手动编写的工作量。 **数据库浏览(Database Browser)**:在Eclipse中可以直接打开...
6. **开发流程**:一般来说,开发流程包括以下几个步骤: - 创建MyEclipse项目,导入所需的Struts和Hibernate库。 - 配置Struts的struts-config.xml和Hibernate的hibernate.cfg.xml。 - 设计并实现实体类,编写...
AppFuse的安装过程主要包括以下几个步骤: 1. **下载AppFuse**:首先从AppFuse的官方网站(https://appfuse.dev.java.net/)获取最新的版本。截至本书撰写时,最新版本为1.9。 2. **环境准备**:确保系统已安装J2SE...
在Java EE开发中,代码生成方法通常包括以下几个关键知识点: 1. **模版引擎**:如FreeMarker、Thymeleaf或Velocity,它们允许开发者定义模板,并根据数据动态生成HTML、XML或Java代码。这些模版引擎能够减少重复性...
在需要与数据库交互时,Action会调用Hibernate的DAO方法,由Hibernate处理数据库操作。完成后,Action将结果封装为模型对象,并通过Struts的Result机制转发到相应的JSP页面进行展示。 7. **开发与调试**:开发者...
J2EE代码生成器的源码通常包含以下几个主要部分: 1. **模板引擎**:代码生成器的核心组件,负责将预定义的模板转换成实际的Java代码。常见的模板引擎有FreeMarker、Velocity等,它们允许开发者用特定的语法编写...
在这个"struts+hibernate+spring 增删改查实例"中,开发者可能会看到以下几个关键组成部分: 1. **.classpath**:这是Eclipse项目中的一个文件,记录了项目的类路径信息,包括库和源文件夹。 2. **.project**:这是...