启动异常:

java.lang.ClassCastException: org.springframework.orm.hibernate4.SessionHolder cannot be cast to org.springframework.orm.hibernate3.SessionHolder

由于hibernate4已经完全可以实现事务了 与spring3.1中的hibernatedao,hibernateTemplete等有冲突,所以spring3.1里已经不提供hibernatedaosupport,hibernateTemplete了,只能用hibernate原始的方式用session。 获得session:getSessionFactory().getCurrentSession()。
 package org.konghao.basic.dao;

 import java.io.Serializable;
import java.util.List;
import java.util.Map;
/**
*
* @author zh
*
* @param <T>
*/
public interface IBaseDao<T extends Serializable> { void save(T t);
void update(T t);
int save(String hql,Object[] params);
void delete(T t);
void deleteById(String hql, Object[] params);
int update(String hql,Object[] params);
T get(final Serializable id);
T load(final Serializable id);
public List<T> listNotIn(String hql, Object[] params);
public List<T> getByHqlNotIn(String hql, Object[] params);
List<T> listAll();
List<T> listFenYe(int firstResult, int maxResults);
List<T> listFenYeNotIn(int firstResult, int maxResults, String hql, Object[] params);
long getCount();
long getCount(String hql,Object[] params);
List<T> listByHql(String hql,Object[] params);
T getByHql(String hql,Object[] params);
List<T> listFenYeAddparams(int firstResult, int maxResults,String hql,Object[] params);
List<T> queryPage(Map map,int firstResult, int maxResults,String hql) ;
long getCount(String hql, Map map);
}

Hibernate4方式

 package org.konghao.basic.dao;

 import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.Iterator;
import java.util.List;
import java.util.Map; import javax.inject.Inject; import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory; /**
* BaseDaoImpl不能在类型未确定前直接实例化
*
* @author zh
* @param <T>
*/
public class BaseDao<T extends Serializable> implements IBaseDao<T> { private SessionFactory sessionFactory; public SessionFactory getSessionFactory() {
return sessionFactory;
} @Inject
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
} protected Session getSession() {
return sessionFactory.getCurrentSession();
} @SuppressWarnings("rawtypes")
private Class Tclass; @SuppressWarnings("rawtypes")
public BaseDao() {
Type type = this.getClass().getGenericSuperclass();
if (type.toString().indexOf("BaseDao") != -1) {
ParameterizedType type1 = (ParameterizedType) type;
Type[] types = type1.getActualTypeArguments();
setTclass((Class) types[0]);
} else {
type = ((Class) type).getGenericSuperclass();
ParameterizedType type1 = (ParameterizedType) type;
Type[] types = type1.getActualTypeArguments();
setTclass((Class) types[0]);
}
} /**
* 保存对象
*
* @param Object
*/ public void save(T t) {
// this.getHibernateTemplate().save(t)
getSession().save(t); } /**
* 更新对象内容
*
* @param Object
*/
public void update(T t) {
// this.getHibernateTemplate().update(t);
getSession().update(t);
} /**
* 删除对象
*
* @param t
*/
public void delete(T t) {
// this.getHibernateTemplate().delete(t);
getSession().delete(t);
} public void deleteById(String hql, Object[] params) {
Query query = this.getSession().createQuery(hql);
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
query.executeUpdate();
} /**
* ͨ通过ID 得到对象
*
* @param Serializable
*/
@SuppressWarnings("unchecked")
public T get(Serializable id) {
// return (T) this.getHibernateTemplate().get(getTclass(), id);
return (T) getSession().get(getTclass(), id);
} /**
* 取得所有对象
*
*/
@SuppressWarnings("unchecked")
public List<T> listAll() {
String hql = "from " + getTclass().getSimpleName();
return this.getSession().createQuery(hql).list();
} /**
* hql解决方案
*
* @param String
* hql
*
* @param Object
* [] params 参数列表 顺序不能颠倒
*/ @SuppressWarnings("unchecked")
public List<T> listByHql(String hql, Object[] params) {
Query query = this.getSession().createQuery(hql);
if (null == params || params.length == 0) {
return query.list();
} else {
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
}
return query.list();
} /**
* 同类分页
*
* @param int firstResult 从第几条开始
* @param int maxResults 要取几条
*/
@SuppressWarnings({ "unchecked" })
public List<T> listFenYe(int firstResult, int maxResults) {
String hql = "from " + getTclass().getSimpleName();
Query query = this.getSession().createQuery(hql)
.setMaxResults(maxResults).setFirstResult(firstResult);
return query.list();
} /**
* 取得行数
*/ public long getCount() {
String hql = "select count(*) from " + getTclass().getSimpleName();
return (Long) this.getSession().createQuery(hql).uniqueResult();
} /**
* 懒加载load
*/
@SuppressWarnings("unchecked")
public T load(Serializable id) {
return (T) getSession().load(getTclass(), id);
} @SuppressWarnings("unchecked")
public T getByHql(String hql, Object[] params) {
Query query = this.getSession().createQuery(hql);
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
return (T) query.uniqueResult();
} @SuppressWarnings("unchecked")
public List<T> getByHqlNotIn(String hql, Object[] params) {
System.out.println("Tclass:" + Tclass);
Query query = this.getSession().createSQLQuery(hql).addEntity(Tclass);
List<T> list = null;
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
list = query.list();
return list;
} @SuppressWarnings("unchecked")
public List<T> listFenYeAddparams(int firstResult, int maxResults,
String hql, Object[] params) {
Query query = this.getSession().createQuery(hql);
List<T> list = null;
if (null == params || params.length == 0) {
list = query.setMaxResults(maxResults).setFirstResult(firstResult)
.list();
}
if (null != params || params.length != 0) {
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
list = query.setMaxResults(maxResults).setFirstResult(firstResult).list();
}
return list;
} @SuppressWarnings("unchecked")
public List<T> listFenYeNotIn(int firstResult, int maxResults, String hql,
Object[] params) {
Query query = this.getSession().createSQLQuery(hql).addEntity(Tclass);
List<T> list = null;
if (null == params || params.length == 0) {
list = query.setMaxResults(maxResults).setFirstResult(firstResult).list();
}
if (null != params || params.length != 0) {
for (int i = 0; i < params.length; i++) {
System.out.println("params:" + params[i]);
query.setParameter(i, params[i]);
}
list = query.setMaxResults(maxResults).setFirstResult(firstResult).list();
}
return list;
} @SuppressWarnings("unchecked")
public List<T> listNotIn(String hql, Object[] params) {
Query query = this.getSession().createSQLQuery(hql).addEntity(Tclass);
List<T> list = null;
if (null != params || params.length != 0) {
for (int i = 0; i < params.length; i++) {
System.out.println("params:" + params[i]);
query.setParameter(i, params[i]);
}
}
list = query.list();
return list;
} public long getCount(String hql, Object[] params) {
Query query = this.getSession().createQuery(hql);
if (null != params || params.length != 0) {
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
}
return (Long) query.uniqueResult();
} @SuppressWarnings("unchecked")
public List<T> queryPage(Map map, int firstResult, int maxResults,
String hql) {
StringBuffer buffer = new StringBuffer(hql);
StringBuffer wherestring = new StringBuffer();
Iterator paramnames = map.keySet().iterator();
while (paramnames.hasNext()) {
String paramname = (String) paramnames.next();
String value = null;
value = String.valueOf(map.get(paramname));
if (value != null) {
value = value.trim();
if (value.equals("")) {
continue;
}
}
if (wherestring.length() == 0) {
wherestring.append(" where ");
} else {
wherestring.append(" and ");
}
wherestring.append(paramname).append("=").append(value);
buffer.append(wherestring);
}
Query query = this.getSession().createQuery(buffer.toString());
List<T> list = query.setMaxResults(maxResults).setFirstResult(firstResult).list();
return list;
} public long getCount(String hql, Map map) {
StringBuffer buffer = new StringBuffer(hql);
StringBuffer wherestring = new StringBuffer();
Iterator paramnames = map.keySet().iterator();
while (paramnames.hasNext()) {
String paramname = (String) paramnames.next();
String value = null;
value = String.valueOf(map.get(paramname));
if (value != null) {
value = value.trim();
if (value.equals("")) {
continue;
}
}
if (wherestring.length() == 0) {
wherestring.append(" where ");
} else {
wherestring.append(" and ");
}
wherestring.append(paramname).append("=").append(value);
buffer.append(wherestring);
}
Query query = this.getSession().createQuery(buffer.toString());
return (Long) query.uniqueResult();
} public int update(String hql, Object[] params) {
Query query = this.getSession().createQuery(hql);
if (params == null) {
return query.executeUpdate();
}
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
return query.executeUpdate();
} public int save(String hql, Object[] params) {
Query query = this.getSession().createQuery(hql);
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
return query.executeUpdate();
} public T queryObject(String hql, Object[] params) {
Query query = this.getSession().createQuery(hql);
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
return (T) query.uniqueResult();
} @SuppressWarnings("rawtypes")
public Class getTclass() {
if(Tclass == null){
Type type = this.getClass().getGenericSuperclass();
ParameterizedType type2 = (ParameterizedType) type;
Type[] types = type2.getActualTypeArguments();
Tclass = (Class<?>) types[0];
}
return Tclass;
} @SuppressWarnings("rawtypes")
public void setTclass(Class tclass) {
Tclass = tclass;
}
}
 
												

baseDao 使用spring3+hibernate4方式的更多相关文章

  1. baseDao 使用spring3+hibernate3方式

    package cn.zk.pic.service.dao; import java.io.Serializable; import java.util.List; import java.util. ...

  2. 画蛇添足-记spring3 hibernate4整合时遇到问题的处理办法

    最近在来到一个新公司,使用新的spring3,hibernate4框架,在使用注解事务总是不起作用. 首先看配置文件,然后再讲解. 首先是springmvc-servlet.xml,这个配置文件是se ...

  3. 使用Maven搭建Struts2+Spring3+Hibernate4的整合开发环境

    做了三年多的JavaEE开发了,在平时的JavaEE开发中,为了能够用最快的速度开发项目,一般都会选择使用Struts2,SpringMVC,Spring,Hibernate,MyBatis这些开源框 ...

  4. Struts2,Spring3,Hibernate4整合--SSH框架

    Struts2,Spring3,Hibernate4整合--SSH框架(学习中) 一.包的导入 1.Spring包 2.Hibernate 包 3.struts 包 (还欠 struts2-sprin ...

  5. Maven搭建Struts2+Spring3+Hibernate4框架

    做了三年多的JavaEE开发了,在平时的JavaEE开发中,为了能够用最快的速度开发项目,一般都会选择使用Struts2,SpringMVC,Spring,Hibernate,MyBatis这些开源框 ...

  6. SpringMVC+Spring3+Hibernate4开发环境的搭建

    在项目早期比较简单,大多用JSP .Servlet + JDBC 直接获取,以后使用 Struts1(Struts2)+Spring+Hibernate, 严格格按照分层概念驱动项目开发.利用这段时间 ...

  7. 【转】SpringMVC+Spring3+Hibernate4开发环境搭建

    原文地址: SpringMVC+Spring3+Hibernate4开发环境搭建

  8. springmvc+spring3+hibernate4框架简单整合,简单实现增删改查功能

    转自:https://blog.csdn.net/thinkingcao/article/details/52472252 C 所用到的jar包     数据库表 数据库表就不用教大家了,一张表,很简 ...

  9. Spring3+hibernate4框架整合

    花了俩天时间复习了一下Spring和jhibernate架构知识,在学习过程中受益颇多.知识用起来才能活起来,长时间不去触碰他就会变得很陌生. Spring 提供了统一的数据访问架构,可以支持JDBC ...

随机推荐

  1. Windows下配置cygwin和ndk编译环境

    cygwin安装 正确的安装步骤其实很简单:1. 下载setup-86_64.exe 2. 直接从网上下载安装,选择包时,顶部选择“default”不变 3. 搜索make,勾选make,cmake, ...

  2. NoSQL架构实践(一)——以NoSQL为辅

    前面<为什么要使用NoSQL>和<关系数据库还是NoSQL数据库>两篇从大体上介绍了为什么要用NoSQL,何时该用NoSQL.经常有朋友遇到困惑,看到NoSQL的介绍,觉得很好 ...

  3. 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:4.安装Oracle RAC FAQ-4.1.系统界面报错Gnome

    1.错误信息:登录系统后,屏幕弹出几个错误对话框,无菜单.无按钮 GConf error: Failed to contact configuration server; some possible ...

  4. ubuntu 安装AMP环境的笔记 Prefork方式与fast-cgi方法

    具体步骤如下: 系统:ubuntu 8.04 的发行版本 AMP with Prefork(mod-php5)       一.安装APACHE2 # sudo  apt-get  install   ...

  5. @错误抑制运算符和or die()

    1.错误抑制运算符可在任何表达式前使用,PHP支持一个错误抑制运算符@.当将其放置在一个PHP表达式之前,则该表达式可能产生的任何错误信息都被忽略掉.@运算符只对表达式有效. 2.or die() 当 ...

  6. CentOS 6.0 缺少 mcrypt 扩展 解决办法

    解决办法:安装php-mcrypt libmcrypt libmcrypt-devel这三个库文件 1.安装第三方yum源(默认yum源里面没有这几个库文件,不能使用yum安装) #wget http ...

  7. 基于Web的数据推送技术(转)

    基于Web的数据推送技术 对于实时性数据显示要求比较高的系统,比如竞价,股票行情,实时聊天等,我们的解决方案有以下几种.1. HTTP请求发送模式,一般可以基于ajax的请求,比如每3秒一次访问下服务 ...

  8. 已经被cocos2dx给折腾的想要放弃它,专注Unity3D的怀抱了!

    一直使用cocos2dx编写自己的2D小游戏,不得不说,编写个人的超级小规模的游戏,使用cocos2dx有一定的优势,首先门槛很低,编写2D游戏用起来也算顺手,可惜一直没有一个优秀的UI编辑器,好不容 ...

  9. Maven安装testNG

    1.Maven安装testNG (1)打开网站:http://testng.org/doc/maven.html (2)复制如下代码,粘贴到项目的pom.xml文件: 1 <dependency ...

  10. OSX学习02之更新输入法

    OSX下最好的输入法是什么?话说在使用Windows的时候就知道了——它叫鼠须管. 想必大家用Windows的时候,进入系统第一步就是先装输入法吧~ OSX也是一样,自带输入法虽然凑合,但是我们作为A ...