在hibernate中通过操作对象来操作数据表,我们可以让POJO继承一个接口,
创建一个BaseDao,让Session对象保存,删除,更新一个接口实例,
在开启一个Session缓存之后,可以通过传入一个POJO对象来操作数据表
ObjectIn.java
----------------------
package com.supersit.hibernate.Interface;
public interface ObjectIn {
}
BaseDao.java
-----------------
package com.supersit.hibernate.dao;
import org.hibernate.Session;
import com.supersit.hibernate.exception.HibernateMsgException;
/**
*
* <p>
* 对于持久化类的添加,删除,修改可以通过继承这个类来实现 如果已开启Session缓存,可以传入这个Session对象进行相应的操作,当然也可以
* 不调用此方法,直接调用Session对象相应的方法即可,在这里只是想实现面向接口编程
* 对于没有开启Session缓存的情况,直接调用只有一个参数的方法,在方法体中会自动创建 Session对象,进行相关操作...
* </p>
*
* @author chenwei
* 2007-10-26
*
*/
public class BaseDao {
/**
* <p>
* 保存一个com.supersit.hibernate.Interface.ObjectIn对象
* </p>
*
* @author chenwei
* @param com.supersit.hibernate.Interface.ObjectIn
* @return boolean
* @throws HibernateMsgException
*/
public boolean saveObj(com.supersit.hibernate.Interface.ObjectIn in)
throws HibernateMsgException {
org.hibernate.Session ses = null;
org.hibernate.Transaction tran = null;
boolean flag = true;
try {
ses = com.supersit.hibernate.factory.HibernateSessionFactory1
.getSession();
tran = ses.beginTransaction();
ses.save(in);
tran.commit();
} catch (Exception e) {
e.printStackTrace();
flag = false;
com.supersit.hibernate.factory.HibernateSessionFactory
.rollbackTran(tran);
} finally {
com.supersit.hibernate.factory.HibernateSessionFactory
.closeSession(ses);
}
return flag;
}
/**
* <p>
* 保存一个com.supersit.hibernate.Interface.ObjectIn对象
* </p>
*
* @author chenwei
* @param com.supersit.hibernate.Interface.ObjectIn
* @return boolean
* @throws HibernateMsgException
*/
public boolean saveObj(Session session,
com.supersit.hibernate.Interface.ObjectIn in) {
boolean flag = true;
try {
session.save(in);
} catch (Exception e) {
e.printStackTrace();
flag = false;
}
return flag;
}
/**
* <p>
* 修改一个com.supersit.hibernate.Interface.ObjectIn对象
* </p>
*
* @author chenwei
* @param com.supersit.hibernate.Interface.ObjectIn
* @return boolean
* @throws HibernateMsgException
*/
public boolean updateObj(com.supersit.hibernate.Interface.ObjectIn in)
throws HibernateMsgException {
boolean flag = true;
org.hibernate.Session ses = null;
org.hibernate.Transaction tran = null;
try {
ses = com.supersit.hibernate.factory.HibernateSessionFactory
.getSession();
tran = ses.beginTransaction();
ses.update(in);
tran.commit();
} catch (Exception e) {
flag = false;
com.supersit.hibernate.factory.HibernateSessionFactory
.rollbackTran(tran);
} finally {
com.supersit.hibernate.factory.HibernateSessionFactory
.closeSession(ses);
}
return flag;
}
/**
* <p>
* 修改一个com.supersit.hibernate.Interface.ObjectIn对象
* </p>
*
* @author chenwei
* @param com.supersit.hibernate.Interface.ObjectIn
* @return boolean
* @throws HibernateMsgException
*/
public boolean updateObj(Session session,
com.supersit.hibernate.Interface.ObjectIn in) {
boolean flag = true;
try {
session.update(in);
} catch (Exception e) {
flag = false;
}
return flag;
}
/**
* <p>
* 删除一个com.supersit.hibernate.Interface.ObjectIn对象
* </p>
*
* @author chenwei
* @param com.supersit.hibernate.Interface.ObjectIn
* @return boolean
* @throws HibernateMsgException
*/
public boolean deleteObj(com.supersit.hibernate.Interface.ObjectIn in)
throws HibernateMsgException {
boolean flag = true;
org.hibernate.Session session = null;
org.hibernate.Transaction tran = null;
try {
session = com.supersit.hibernate.factory.HibernateSessionFactory
.getSession();
tran = session.beginTransaction();
session.delete(in);
tran.commit();
} catch (Exception e) {
flag = false;
com.supersit.hibernate.factory.HibernateSessionFactory
.rollbackTran(tran);
} finally {
com.supersit.hibernate.factory.HibernateSessionFactory
.closeSession(session);
}
return flag;
}
/**
* <p>
* 删除一个com.supersit.hibernate.Interface.ObjectIn对象
* </p>
*
* @author chenwei
* @param com.supersit.hibernate.Interface.ObjectIn
* @return boolean
* @throws HibernateMsgException
*/
public boolean deleteObj(Session session,
com.supersit.hibernate.Interface.ObjectIn in) {
boolean flag = true;
try {
session.delete(in);
} catch (Exception e) {
flag = false;
}
return flag;
}
}
Employee.java
---------------------------
package com.supersit.hibernate.bean;
import java.util.Date;
import java.util.Set;
public class Employee implements java.io.Serializable,
com.supersit.hibernate.Interface.ObjectIn {
/**
*
*/
private static final long serialVersionUID = 1L;
//雇员编号
private Integer eid;
//雇员姓名
private String ename;
//入职时间
private java.util.Date join_date;
//角色集合
private java.util.Set<Role> roles = new java.util.HashSet<Role>();
public Employee(Integer eid, String ename, Date join_date) {
this.eid = eid;
this.ename = ename;
this.join_date = join_date;
}
public Employee(Integer eid, String ename, Date join_date, Set<Role> roles) {
this.eid = eid;
this.ename = ename;
this.join_date = join_date;
this.roles = roles;
}
public java.util.Set getRoles() {
return roles;
}
public void setRoles(java.util.Set<Role> roles) {
this.roles = roles;
}
public Employee() {
}
public Integer getEid() {
return eid;
}
public void setEid(Integer eid) {
this.eid = eid;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public java.util.Date getJoin_date() {
return join_date;
}
public void setJoin_date(java.util.Date join_date) {
this.join_date = join_date;
}
}
调和示例:
---------------
// 保存对象
public static void insert() throws HibernateMsgException {
java.util.Date date = new java.util.Date();
java.text.SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
try {
date = format.parse("2007-10-17");
} catch (ParseException e) {
e.printStackTrace();
}
//创建一个雇员对象
Employee emp = new Employee(new Integer(1), "张信哲", date);
Session session = null;
Transaction tran = null;
try {
session = com.supersit.hibernate.factory.HibernateSessionFactory
.getSession();
tran = session.beginTransaction();
//已开启Session缓存,调用有两个参数的保存方法,如果没有开启Session缓存,直接调用有一个参数的保存方法即可实现
boolean b = new BaseDao().saveObj(session, emp);
if (b) {
System.out.println("成功保存一个Employee对象");
}
tran.commit();
} catch (Exception e) {
com.supersit.hibernate.factory.HibernateSessionFactory
.rollbackTran(tran);
} finally {
com.supersit.hibernate.factory.HibernateSessionFactory
.closeSession(session);
}
}
分享到:
相关推荐
在本教程中,我们将深入探讨Hibernate的核心开发接口,这些接口是Hibernate框架的基石,使得开发者能够轻松地与数据库进行交互。Hibernate是一个强大的Java对象关系映射(ORM)框架,它消除了传统SQL编程的繁琐,...
《妙解Hibernate 3.x:叩响面向对象思想之门》是一本深入解析Hibernate框架的专著,旨在帮助读者理解并掌握面向对象编程思想在实际开发中的应用,尤其是在使用Hibernate时如何有效地进行数据持久化。这本书是面向...
Hibernate是一个开放源代码的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作,使得开发者可以使用面向对象的方式来处理数据,而无需过多关注底层SQL语句的编写。 在Hibernate中,核心概念包括...
在IT行业中,CXF、Spring和Hibernate是三个非常重要的开源框架,它们分别在Web服务、依赖管理和...总之,这个"CXF接口Spring+Hibernate的添加完整版"是一个宝贵的教育资源,有助于提升开发者在企业级应用开发中的技能。
在面向接口的编程思想下,我们将定义一个通用的DAO接口,例如`GenericDAO, ID>`,其中`T`代表实体类类型,`ID`是主键类型。这个接口通常会包含`save()`, `update()`, `delete()`, `findById()`, `findAll()`等基本...
面向对象编程(Object-Oriented Programming,简称OOP)是一种广泛应用的编程范式,它将程序设计中的实体抽象为对象,通过对象之间的交互来实现功能。这种编程方式使得代码更易于理解和维护,同时也增强了代码的复用...
Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者在Java对象和数据库记录之间建立映射,从而简化数据库编程。这篇“Hibernate中文文档 HTML格式”提供了丰富的关于Hibernate的知识,便于中文用户...
《JAVA数据库编程之Hibernate开发指南》是一份深入探讨Java领域中ORM框架Hibernate的参考资料,它旨在帮助开发者理解和掌握如何在Java应用中有效地进行数据库编程。Hibernate作为Java领域中备受推崇的对象关系映射...
在Java开发中,Hibernate作为持久层框架,它将面向对象的编程理念与数据库操作相结合,极大地提高了开发效率。这个中文API文档涵盖了Hibernate的所有核心组件和功能,包括实体管理、会话管理、查询语言(HQL)、 ...
在这个“简单的Hibernate应用”中,我们将探讨Hibernate的基本概念、核心组件以及如何在实际项目中应用。 1. Hibernate概览:Hibernate是一个开源的ORM框架,它提供了一种在Java应用程序中管理关系数据库的机制。...
《Hibernate参考指南中文版》与《Hibernate中文手册》是学习Java领域中ORM(对象关系映射)框架Hibernate的重要参考资料。...通过深入学习和实践,开发者能够熟练地运用Hibernate提升Java应用的数据处理能力。
开发者需要在这里定义SessionFactory,它是整个Hibernate应用的核心,用于创建Session实例。 Session接口是与数据库交互的主要接口,它提供了事务管理和对象持久化的功能。Session的openCriteria()和createQuery()...
Hibernate是一款开源的对象关系映射(ORM)框架,它允许开发者使用面向对象的编程方式来操作数据库,极大地简化了Java应用程序与数据库之间的交互。这个压缩包包含的资源是Hibernate的中英文API文档,以及一些指南,...
在这个“javahibernate应用举例”中,我们将深入探讨如何利用Hibernate简化Java中的SQL操作,以及如何实现数据的查找和保存功能。 首先,Hibernate通过提供一个API,使得开发人员无需直接编写SQL语句就能进行数据...
在Hibernate中,`Transaction`接口负责事务管理,提供了与底层事务API(如JDBC的Transaction或JTA的UserTransaction)的隔离,提供了一致的编程模型。这使得代码可以独立于具体的事务实现,便于在不同环境间移植。 ...
* 在 hibernate lib 中加入 annotation 的 jar 包 * 参考 Annotation 文档建立对应的注释 * 在 hibernate.cfg.xml 中建立映射 * 参考文档进行测试 O/R Mapping O/R Mapping 是一种将对象和关系数据库之间建立关联...
Hibernate是一个开源的对象关系映射(ORM)框架,它允许开发者使用面向对象的编程方式来处理数据库操作,极大地简化了Java应用程序与数据库之间的交互。 在手册中,首先会介绍Hibernate的核心概念,包括实体...
在基于持久层框架的DAO(Data Access Object)模式应用中,Hibernate扮演着核心角色,使得业务逻辑和数据访问逻辑分离,提高了代码的可复用性和可维护性。 1. **DAO模式的理解** DAO模式是一种设计模式,它创建了...
2. **配置文件(hibernate.cfg.xml)**:这是Hibernate应用的基础配置文件,包含数据库连接信息、实体类扫描路径、缓存设置等。理解和配置好这个文件是使用Hibernate的第一步。 3. **实体类(Entity)**:实体类...
- **SessionFactory**:是 Hibernate 中最核心的类之一,它负责创建 Session,并且是线程安全的,因此通常在整个应用程序生命周期中只需要一个实例。 - **Session**:是与数据库交互的主要接口,提供了诸如查询、...