import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
public abstract class BaseDao<T> {
private SessionFactory sessionFactory;
private Class clazz;
public BaseDao() {
super();
clazz = getParameterizedTypeByParent(super.getClass());
}
private Class getParameterizedTypeByParent(Class clazz) {
Type tp = clazz.getGenericSuperclass();
if (tp instanceof ParameterizedType) {
return (Class) ((ParameterizedType) tp).getActualTypeArguments()[0];
} else {
throw new ClassCastException("this is not ParameterizedType type");
}
}
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public List findAll() {
List results = getSession().createCriteria(clazz).list();
return results;
}
public T findById(Integer id) {
T result = (T) getSession().get(clazz, id);
return result;
}
public void update(T obj) {
getSession().save(obj);
}
private Session getSession() {
return sessionFactory.getCurrentSession();
}
}
分享到:
相关推荐
在BaseDAO中,每个方法的输入参数、返回值以及可能抛出的异常都应该有清晰的解释。 5. **BaseDAO的优化** 除了基本操作,BaseDAO还可以进行一些优化,比如事务管理、缓存控制、批量操作等。例如,可以使用Spring的...
在Java开发领域,Hibernate是一个非常重要的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以更专注于业务逻辑而不是底层的数据访问。`BaseDAO`是许多项目中常见的一种设计模式,它代表了数据访问对象...
项目中实现了分页功能,可能通过在Hibernate查询中添加限制条件(如`setFirstResult()`和`setMaxResults()`)或者使用`Criteria` API的`setFirstResult()`和`setMaxResults()`来实现。这使得用户可以按需加载数据,...
在Java的持久化框架Hibernate中,BaseDAO(Base Data Access Object)是一种常见的设计模式,用于封装数据库操作,提供一套标准的方法来实现CRUD(Create、Read、Update、Delete)操作。这种模式使得业务层可以更加...
在`BaseDao`的实现中,这些方法会利用Hibernate的Session和Transaction接口来完成实际的数据库交互。`Session`是Hibernate的主要工作单元,它可以代表一次数据库连接或者一个单位的工作。`Transaction`则用于管理...
在Java编程语言中,BaseDao(基础数据访问对象)是一个常见的设计模式,它为数据库操作提供了一种统一的接口。BaseDao通常包含了CRUD(创建、读取、更新、删除)的基本方法,使得开发者可以方便地对数据库进行操作,...
在基于Spring和Hibernate的应用中,实现分页通常涉及到使用Hibernate的Criteria API或HQL来添加LIMIT和OFFSET子句,或者使用Spring Data JPA的Pageable接口。 总结起来,这个"ssh"压缩包中的示例代码展示了如何在...
泛型是Java SE 5.0引入的新特性,它允许在类、接口和方法中使用类型参数,从而实现更强大的类型检查和减少类型转换的冗余。 1. 泛型BaseDAO:`GenericBaseDao.java`和`GenericBaseDaoInter.java` 泛型BaseDAO的主要...
在Java开发中,BaseDao和BaseDaoImpl是常见的设计模式,它们主要用于数据库操作,尤其是在使用ORM框架如Hibernate时。这两个类通常作为数据访问对象(DAO)的基类,旨在简化和标准化对数据库的CRUD(创建、读取、...
"基于BaseDao的手动数据库操作"是一个常见的话题,尤其在Java开发中。BaseDao是一种设计模式,它通常被用来作为数据库访问对象(DAO)的基础,用于封装数据库的基本CRUD(创建、读取、更新、删除)操作。这种模式...
在Java开发中,BaseDao(基础数据访问对象)是一个常见的设计模式,用于提供数据库操作的通用接口或基类。这个模式的主要目标是提高代码的复用性和可维护性,通过抽象出基本的CRUD(创建、读取、更新、删除)操作,...
在企业级软件开发中,通用BaseDao方法集是提高代码复用性和开发效率的重要工具。BaseDao(Base Data Access Object)通常是一个基类,它包含了数据库操作的基本方法,供其他具体的DAO类继承使用。BaseDao的设计理念...
在IT行业中,SpringBoot是一个非常流行的Java开发框架,它简化了Spring应用的初始搭建以及开发过程,使得开发者能够快速地创建生产级别的、基于Spring框架的应用。"SpringBoot_BaseDao.zip"这个压缩包文件显然与...
在Java持久化框架Hibernate中,对象关系模型(Object-Relational Mapping,ORM)是将数据库中的数据映射到Java对象的技术。它使得开发者能够用面向对象的方式来操作数据库,简化了数据库编程的过程。以下是对...
在IT行业中,SSH(Spring、Struts、Hibernate)是一个经典的Java Web开发框架组合,而BaseDao是常用于数据访问层的一个基类设计。本话题主要围绕如何利用SSH框架结合BaseDao实现分页功能来展开。 首先,让我们了解...
- 在Hibernate中,可以通过`<set>`元素定义一对多的关系。 - 示例代码中: - `<set name="history">`表示`Students`实体类中有一个名为`history`的集合属性。 - `<one-to-many class="limq.hibernate.vo.History...
3. **模板方法**:在BaseDao中,可以定义模板方法,例如executeSql,子类在实现具体操作时调用这个模板方法,从而统一事务控制。 总结,Spring的声明式事务管理简化了事务处理,使得开发者可以专注于业务逻辑,而...
这些方法的实现可以使用模板方法设计模式,将一部分通用逻辑放在`BaseDao`中,而具体的SQL语句或者HQL(Hibernate Query Language)则由子类提供。 在实际项目中,`BaseDao`的实现往往需要结合事务管理。例如,当一...
在这个场景中,"BaseDao"通常是一个基类,它包含了通用的数据库操作方法,可以被各个特定的DAO(Data Access Object)继承,以实现业务逻辑中的数据访问。 1. **BaseDao**:BaseDao是DAO层的基类,它的设计目的是...
对于初学者来说,理解并掌握此类的实现原理和使用方法,有助于快速上手数据库编程。 ### JDBC基础知识 1. **JDBC接口与驱动管理**: JDBC是Java与数据库交互的标准API,通过`DriverManager`管理数据库驱动,`...