public class PersistenceManagerHibernate extends HibernateDaoSupport implements PersistenceManager {
protected Logger logger = Logger.getLogger(PersistenceManager.class.getName());
public PersistenceManagerHibernate() {
super();
}
@SuppressWarnings("unchecked")
public <T> List<T> findAll(Class<T> entityClass) throws DataAccessException {
//getHibernateTemplate().setCacheQueries(true);
List<T> results = getHibernateTemplate().loadAll(entityClass);
Set<T> set = new HashSet<T>(results);
results = new ArrayList<T>(set);
return results;
}
@SuppressWarnings("unchecked")
public <T> T findById(Class<T> entityClass, Long id) throws DataAccessException {
//getHibernateTemplate().setCacheQueries(true);
T o = (T) getHibernateTemplate().get(entityClass, id);
if(o == null){
logger.warn("uh oh, document with id '" + id + "' not found...");
throw new ObjectRetrievalFailureException(entityClass, id);
}
else {
return o;
}
}
public <T> void saveOrUpdate(T entity) throws DataAccessException {
getHibernateTemplate().saveOrUpdate(entity);
}
@SuppressWarnings("unchecked")
public <T> T merge(T entity) throws DataAccessException {
return (T) getHibernateTemplate().merge(entity);
}
public <T> void remove(T entity) throws DataAccessException {
getHibernateTemplate().delete(entity);
}
public <T> void removeAll(Class<T> entityClass) throws DataAccessException {
getHibernateTemplate().deleteAll(this.findAll(entityClass));
}
@SuppressWarnings("unchecked")
public <T> List<T> findByNamedQueryAndNamedParam(Class<T> entityClass,
String queryName, String[] paramNames, Object[] values) throws DataAccessException {
List<T> results = (List<T>) getHibernateTemplate().findByNamedQueryAndNamedParam(queryName, paramNames, values);
return results;
}
public <T> List<T> findByNamedQueryAndNamedParam(Class<T> entityClass,
String queryName, Map<String, ?> params) throws DataAccessException {
String[] paramNames = new String[params.size()];
Object[] values = new Object[params.size()];
List<String> keys = new ArrayList<String>(params.keySet());
for(int i=0; i<keys.size(); i++){
String k = keys.get(i);
paramNames[i] = k;
values[i] = params.get(k);
}
return this.findByNamedQueryAndNamedParam(entityClass, queryName, paramNames, values);
}
@SuppressWarnings("unchecked")
public <T> List<T> findByNamedParam(Class<T> entityClass, String query,
String[] paramNames, Object[] values) throws DataAccessException {
List<T> results = (List<T>) getHibernateTemplate().findByNamedParam(query, paramNames, values);
return results;
}
@SuppressWarnings("unchecked")
public <T> List<T> findByNamedParam(Class<T> entityClass, String query,
Map<String, ?> params) throws DataAccessException {
String[] paramNames = new String[params.size()];
Object[] values = new Object[params.size()];
List<String> keys = new ArrayList<String>(params.keySet());
for(int i=0; i<keys.size(); i++){
String k = keys.get(i);
paramNames[i] = k;
values[i] = params.get(k);
}
List<T> results = (List<T>) getHibernateTemplate().findByNamedParam(query, paramNames, values);
return results;
}
}
分享到:
相关推荐
public abstract class HibernateGenericDao<T> implements GenericDao<T> { private SessionFactory sessionFactory; public HibernateGenericDao(SessionFactory sessionFactory) { this.sessionFactory = ...
public class GenericDaoImpl<T> implements GenericDao<T> { // ... @Override public List<T> query(String sql, Object... params) { List<T> list = new ArrayList(); Connection conn = null; ...
7. `loadById(Class<T> entityClass, Serializable id)`:根据ID加载实体。 接着,`GenericDao.java`是泛型DAO接口,它定义了对所有类型实体进行操作的方法。这些方法利用了Java的泛型特性,使得DAO可以处理任何...
public class UserDao implements GenericDao<User> { // 实现接口中的方法,但无需重新声明类型 @Override public void save(User user) { ... } @Override public User get(Class<User> clazz, int id) { ......
当然还要获得域对象的Class实例,这就要在构造方法中传入Class实例。用spring提供的HibernateTemplate注入到GenericHibernateDao中,这样在各个实现类就可以直接调用HibernateTemplate来实现额外的查询操作了。 ...
public class GenericDaoImpl<T> implements GenericDao<T> { private Class<T> entityType; public GenericDaoImpl(Class<T> entityType) { this.entityType = entityType; } // 实现接口中的各个方法,...
class)public interface PersonDao extends GenericDao< Person> {} 您不需要编写任何其他内容,您的DAO将在运行时使用您可以期望的所有方法进行检测:读取,创建,删除,存储,findAll等。 如果您需要特定的查询...
java servlet :glasses: 对象...参数:包含用于执行查询的数据数组,特别是每个 ? 对应于阵列中的试验部分。 select * form news where news.A = ?... AbstractDAO: public class AbstractDAO<T> im
public class UserDao extends OrmLiteBaseDao, String> implements GenericDao, String> { public UserDao(ConnectionSource connectionSource) throws SQLException { super(connectionSource, User.class); } ...
public class UserDao extends GenericDao<User> {} ``` 但这种做法可能让某些开发者觉得过于复杂,特别是如果只需要简单操作而不需要高度定制化的时候。 在这种情况下,"hibernate不是泛型的通用DAo1"可能提供了一...
`bin`目录通常是编译后生成的Java字节码文件(.class)所在的目录,包含了项目的编译结果。 `src`目录则是源代码目录,通常包含Java源文件,比如项目的各个组件(如泛型Dao的接口和实现类)的代码。 `lib`目录存放...
public class UserDaoImpl implements GenericDAO, Long> { @Override public User save(User user) { // 实现保存用户的逻辑 } @Override public User findById(Long id) { // 实现根据ID查找用户的逻辑 }...
public interface GenericDao, ID extends Serializable> { T save(T entity); void delete(ID id); T findById(ID id); List<T> findAll(); } ``` 在Hibernate中,我们可以使用HibernateTemplate或...
public class JdbcGenericDao<T> extends AbstractJdbcDaoSupport implements GenericDao<T> { @Override public void save(T entity) { getJdbcTemplate().update("INSERT INTO ...", getParameters(entity)); ...
super(Person.class); } 告诉对哪个类操作,如不需要自定义扩展方法就作有一个构造方法。 泛型Service:GenericService.java 与泛型dao没有区别 Service :PersonService.java 直接继承。 泛型serviceimpl与...
public abstract class HibernateGenericDaoImpl, ID extends Serializable> implements GenericDao, ID> { // 实现GenericDao接口中的方法 } ``` 最后,关于标签"源码"和"工具",这表明这篇博客可能详细讲解了...
super(Person.class); } 告诉对哪个类操作,如不需要自定义扩展方法就作有一个构造方法。 泛型Service:GenericService.java 与泛型dao没有区别 Service :PersonService.java 直接继承。 泛型serviceimpl与...
然后,我们可以为每种实体类创建一个继承自`GenericDao`的实现类,如`UserDaoImpl`,并在Spring配置文件中声明并注入到Service层。这样,Service层就可以通过调用`UserDaoImpl`的方法,完成对用户表的操作,而无需...
public class GenericDAO<T> { public T findById(int id) { // 实现查询逻辑 } } ``` 这里的`T`是一个类型参数,具体是什么类型由使用时传入的实际类型决定,如`GenericDAO<User>`,这样就可以避免了类型转换的...
public class GenericHibernateDaoImpl<T> implements GenericDao<T> { private Class<T> clazz; @SuppressWarnings("unchecked") public GenericHibernateDaoImpl() { // 通过反射获取 T 的类型信息实例 this...