package com.soft.common;
import java.io.Serializable;
import java.util.List;
import com.soft.Exception.CommonException;
import com.soft.query.HqlExecute;
/**
*
* @author 通用接口
*/
public interface ICommon<POJO> {
/**
* 添加对象
*
* @param Object
* @throws CommonException
*/
public abstract void insert(POJO obj) throws CommonException;
/**
* 修改对象
*
* @param Object
* @throws CommonException
*/
public abstract void update(POJO obj) throws CommonException;
/**
* 删除对象
*
* @param object
* @throws CommonException
*/
public abstract void delete(POJO obj) throws CommonException;
/**
* 根据主键查询对象
*
* @param Class
* @param id
* @return Object
* @throws CommonException
*/
public abstract POJO getById(Class cl, Serializable id)
throws CommonException;
/**
* 根据主键删除对象
*
* @param Class
* @param id
* @throws CommonException
*/
public abstract void deleteById(Class cl, Serializable id)
throws CommonException;
/**
* 批量删除
*
* @param Class
* @param serializables(id数组)
* @throws CommonException
*/
public abstract void deletebatch(Class cl, Serializable... serializables)
throws CommonException;
/**
* 总记录条数
*
* @param Class
* @return int
* @throws CommonException
*/
public abstract int gettotal(Class cl) throws CommonException;
/**
* 总记录条数
*
* @param Class 类名
* @prama String 状态属性名
* @return int
* @throws CommonException
*/
public abstract int gettotal(Class cl,String state) throws CommonException;
/**
* 总页数,总记录
*
* @param Class
* @param pagesize
* @return int[]
* @throws CommonException
*/
public abstract int[] getpagetotal(Class cl, int pagesize)throws CommonException;
/**
* 总页数,总记录
* @param Class 类名
* @prama String 状态属性名
* @param pagesize ��大小
* @return int[]
* @throws CommonException
*/
public abstract int[] getpagetotal(Class cl,String state, int pagesize)throws CommonException;
/**
* 查询
* @param hqlexe
* @return
* @throws CommonException
*/
public abstract List query(HqlExecute hqlexe) throws CommonException;
}
-----------------------------------------------------------------------------------------------------------------
package com.soft.common;
import java.io.Serializable;
import java.sql.SQLException;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.soft.Exception.CommonException;
import com.soft.hbm.HibernateSessionFactory;
import com.soft.query.HqlExecute;
import com.soft.query.QueryException;
/**
*
* @author 通用接口实现类
*/
public class Common<POJO> extends HibernateDaoSupport implements ICommon<POJO>{
/**
* 实现通用接口:删除
*/
public void delete(POJO obj) throws CommonException {
try {
this.getHibernateTemplate().delete(obj);
} catch (HibernateException e) {
e.printStackTrace();
throw new CommonException(e);
}
}
/**
* 实现通用接口:根据主键删除对象
*/
public void deleteById(Class cl, Serializable id) throws CommonException {
try {
this.getHibernateTemplate().delete(this.getHibernateTemplate().load(cl, id));
} catch (HibernateException e) {
e.printStackTrace();
throw new CommonException(e);
}
}
/**
* 实现通用接口:批量删除
*/
public void deletebatch(Class cl, Serializable... serializables)
throws CommonException {
try {
// 连接参数
String ins = "";
for (Serializable a : serializables) {
ins += a + ",";
}
if (ins.endsWith(",")) {
ins = ins.substring(0, ins.length() - 1);
}
final StringBuffer sb = new StringBuffer("delete from ").append(
cl.getSimpleName()).append(" as a where a.id in(").append(
ins).append(")");
this.getHibernateTemplate().executeFind(new HibernateCallback(){
public Object doInHibernate(Session session) throws HibernateException, SQLException {
try {
session.createQuery(sb.toString());
return session.createQuery(sb.toString()).executeUpdate();
} catch (RuntimeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new HibernateException(e);
}
}
});
} catch (HibernateException e) {
e.printStackTrace();
throw new CommonException(e);
}
}
/**
* 实现通用接口:根据主键查询对象
*
*/
public POJO getById(Class cl, Serializable id) throws CommonException {
try {
return (POJO) this.getHibernateTemplate().get(cl, id);
} catch (HibernateException e) {
e.printStackTrace();
throw new CommonException(e);
}
}
/**
* 实现通用接口:总页数,总记录
* 参数:class:类名
* pagesize:页大小
*/
public int[] getpagetotal(Class cl, int pagesize) throws CommonException {
int[] a = null;
try {
int total = this.gettotal(cl);
a = new int[] {
total % pagesize == 0 ? total / pagesize : total / pagesize
+ 1, total };
} catch (CommonException e) {
e.printStackTrace();
throw new CommonException(e);
}
return a;
}
/**
* 实现通用接口:总记录条数(getSimpleName得到对象)(在表中�]有���B的)
* 参数:class:类名
*/
public int gettotal(Class cl) throws CommonException {
int total = 0;
try {
final StringBuffer hql = new StringBuffer("select count(a) from ")
.append(cl.getSimpleName()).append(" a");
total=Integer.parseInt((this.getHibernateTemplate().execute(new HibernateCallback(){
public Object doInHibernate(Session session) throws HibernateException, SQLException {
return session.createQuery(hql.toString()).uniqueResult();
}
})).toString());
System.out.println("com total:"+total);
return total;
} catch (DataAccessException e) {
e.printStackTrace();
throw new CommonException(e);
}
}
/**
* 实现通用接口:总记录条数(getSimpleName得到对象)(在表中有���B的),要传个状态字段
* 参数:class:类名
* State:状态属性
*
*/
public int gettotal(Class cl,String state) throws CommonException {
int total = 0;
try {
final StringBuffer hql = new StringBuffer("select count(a) from ")
.append(cl.getSimpleName()).append(" a").append(" where a.").append(state).append("<>1");
total=Integer.parseInt((this.getHibernateTemplate().execute(new HibernateCallback(){
public Object doInHibernate(Session session) throws HibernateException, SQLException {
try {
return session.createQuery(hql.toString()).uniqueResult();
} catch (RuntimeException e) {
e.printStackTrace();
throw new HibernateException(e);
}
}
}
)).toString());
System.out.println("total:"+total);
return total;
} catch (DataAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new CommonException(e);
}
}
/**
* 实现通用接口:总页数,总记录(有状态字段的)
* 参数:class:类名
* State:状态属性
* pagesize:页大小
*/
public int[] getpagetotal(Class cl,String state, int pagesize) throws CommonException {
int[] a = null;
try {
int total = this.gettotal(cl,state);
a = new int[] {
total % pagesize == 0 ? total / pagesize : total / pagesize
+ 1, total };
} catch (CommonException e) {
e.printStackTrace();
throw new CommonException(e);
}
return a;
}
/**
* 实现通用接口:添加对象
*/
public void insert(POJO obj) throws CommonException {
try {
this.getHibernateTemplate().save(obj);
} catch (HibernateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new CommonException(e);
}
}
/**
* 实现通用接口:修改对象
*/
public void update(POJO obj) throws CommonException {
try {
this.getHibernateTemplate().update(obj);
} catch (HibernateException e) {
e.printStackTrace();
throw new CommonException(e);
}
}
/**
* 实现通用接口:查询
*/
public List query(final HqlExecute hqlexe) throws CommonException {
try {
List list=this.getHibernateTemplate().executeFind(new HibernateCallback(){
public Object doInHibernate(Session session) throws HibernateException, SQLException {
try {
return hqlexe.execute(session);
} catch (QueryException e) {
e.printStackTrace();
throw new HibernateException(e);
}
}
});
return list;
} catch (DataAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new CommonException(e);
}
}
}
分享到:
相关推荐
在Hibernate的底层实现中,CGLIB(Code Generation Library)起到了至关重要的作用。CGLIB是一个代码生成库,它基于ASM库,但提供了更高级别的抽象和更加便捷的API。 首先,CGLIB扩展了ASM的Visitor模式。ASM是一个...
下面我们将深入探讨Spring与Hibernate整合的底层数据操作方法。 一、Spring与Hibernate整合基础 1. 依赖管理:整合Spring和Hibernate首先需要在项目中引入相应的依赖,通常包括Spring的核心库、Spring的数据访问/...
在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它简化了数据库操作,使得开发者可以更专注于业务逻辑而不是数据库层面的细节。`BaseDao`是常见的一种设计模式,用于封装Hibernate的基本数据库...
Hibernate通过将对象模型与关系数据库模型之间的映射进行自动化处理,极大地简化了数据访问层(DAO)的实现,让开发者可以专注于业务逻辑,而非底层的数据库操作。 Hibernate是什么? Hibernate是一个基于JDBC的ORM...
通过将对象映射到数据库表,Hibernate使得开发人员可以专注于业务逻辑,而无需关注底层的SQL语句。以下是对"Hibernate操作数据库的步骤"的详细解释: 1. **读取并解析配置文件**:在Hibernate中,配置文件(通常是`...
ession = sessionFactory.openSession(); //开始事务Transaction tx = session.beginTransaction();...通过熟练掌握 Hibernate,开发者可以更专注于业务逻辑,而不是底层的 SQL 操作,从而提高开发效率和代码质量。
总结来说,Hibernate通过提供面向对象的API,极大地降低了数据库操作的复杂性,使得开发人员可以更加专注于业务逻辑,而不是底层的数据访问细节。`testHiberbateJava`项目就是一个很好的学习资源,通过实际操作,你...
在构建Web应用程序时,"Spring4+SpringMVC+mysql+memcached【同时支持mybatis+hibernate两种底层操作框架】"是一个常见的技术栈,它涵盖了多个关键组件,为高效、灵活的开发提供了坚实的基础。以下是这个技术组合中...
这篇博客文章“Hibernate操作Oracle中Clob、Blob字段小结”可能会探讨如何在Hibernate中有效地处理这两种类型的数据。 1. **Clob与Blob的理解**: - Clob:Clob是用于存储大量字符数据的类型,例如长篇文章、XML...
1、Hibernate 是一个 ORM(Object-Relational Mapping)框架,... 5、由于 Hibernate 底层是基于 JDBC 的,因此在应用程序中使用 Hibernate 执行 持久化操作时也需要导入相关的 JDBC 驱动(例如 MySQL 数据库驱动)。
Java使用Hibernate操作数据库是现代Java应用中常见的技术实践,Hibernate作为一个强大的对象关系映射(ORM)框架,极大地简化了数据库的交互。它允许开发者用Java对象来表示数据库中的记录,而无需关心底层SQL的实现...
通过这样的封装,开发者可以专注于业务逻辑,而无需关心底层的数据库操作细节,大大提高了开发效率和代码质量。在"xjpa-master"项目中,我们可以看到这种封装思想的实践,对于快速开发和维护是非常有益的。
Hibernate 提供了一种将Java对象模型与关系数据库之间的映射机制,使得开发者可以使用面向对象的方式来操作数据库,而无需关心底层SQL语句。理解ORM的概念是学习Hibernate的第一步。 2. **Hibernate配置**: 在...
这个过程简化了数据库操作,使得开发者可以专注于业务逻辑,而不是底层的SQL细节。随着对Hibernate的深入理解和实践,你可以进一步探索更多高级特性,如懒加载、级联操作、多表关联等,提升开发效率和代码质量。
ORM 是一种编程技术,它将面向对象的编程模型与关系数据库模型进行映射,使得开发者可以使用对象来操作数据库,而无需关注底层的 SQL 语句。Hibernate 作为 ORM 的代表,简化了 Java 应用程序对数据库的操作。 2. ...
在Hibernate框架中,ORM模型简化了数据库查询的过程,开发者可以利用ORM框架提供的查询接口,以对象的方式操作数据,而无需深入了解数据库的底层结构。这样,开发者能够专注于业务逻辑的实现,而不是繁琐的数据库...
通过学习和使用Hibernate,开发者可以更专注于业务逻辑,而不是底层的数据库操作,从而提高开发效率和代码质量。在SSH框架下,Hibernate与其他两个组件的协同工作,可以构建出高效、可维护的企业级应用。
在实际开发中,使用“达梦Hibernate方言2.0至4.0”可以确保你的Java应用能无缝地在达梦数据库上运行,无需关注底层SQL的细节。开发人员可以通过Java对象直接操作数据库,提高了开发效率,同时减少了数据库依赖相关的...
在Java的持久化层开发中,Hibernate作为一款强大的ORM(对象关系映射)框架,极大地简化了数据库操作。然而,手动编写实体类和映射文件(hbm.xml)的过程仍需消耗大量时间。为了解决这一问题,两个工具——hibernate...
Hibernate是一个强大的Java持久化框架,它简化了数据库操作,使得开发者可以更专注于业务逻辑而不是数据访问层的细节。在数据库层面,视图是预定义的SQL查询结果,它提供了对数据的一种抽象,允许我们以特定的方式...