gpt4 book ai didi

java - Generic Dao 的设计模式,Spring 中的服务层,不使用 Hibernate

转载 作者:太空宇宙 更新时间:2023-11-04 06:17:59 27 4
gpt4 key购买 nike

我访问了太多网站,也在 stackoverflow 上提出问题 for reference但我找不到下面的确切答案。

我想为 Generic DAO Pattern 设计一个架构不使用hibernate .

目前我在开发时遇到困难GenericSpringDAOImpl<DomainObject> java 文件。如何制作通用getList()没有 DomainObject 的方法(返回 hibernate 对象)或者我说使用 jdbctemplatespring

我的代码如下:

GenericDAO.java

public interface GenericDAO<DomainObject extends Serializable, KeyType extends Serializable> extends Serializable{

/**
* Give list of all entities of underlying Domain Object.
* @return List of all entities.
*/
public List<DomainObject> getList();
/**
* Returns the total number of Entities that is affected by sql query,.
*
* @param query
* the query
* @return Number of Entities affected By SQL Query.
*/
public int getRecordBySQLQuery(String query);

/**
* Returns Domain object whose Key-value pair matched.
* @param keyName Column name
* @param keyValue any value that is being matched under Column name.
* @return DomainObject
*/
public DomainObject getRecordByKeyandValue(String keyName,Object keyValue);

public DomainObject getRecordByKeysAndValues(String[] keyName,Object[] keyValue);

/**
* Returns list of Domainobjects whose Key-value pair matched.
* @param colname Column name
* @param keyValue List of values.
* @return List<DomainObject> according to the Condition satisfied.
*/
public List<DomainObject> getListByKeyandValue(String colname,List<? extends Object> keyValue);

/**
* Returns the list of Entities according to the condition applied.
* @param condition Condition
* @return List<DomainObject> according to condition satisfied.
*/
public List<DomainObject> getListByCondition(String condition);

/**
* Find Object based on primary key.
* @param id Identifier value is passed.
* @return DomainObject i.e POJO which has the passed id value.
*/
public DomainObject getRecordByPrimaryKey(KeyType id);

/**
* get the list of primary keys based on the condition.
* @param condition Condition
* @return List<KeyType> of Primary Keys according to the Condition.
*/
public List<KeyType> getPrimaryKeyCollection(String condition);

/**
* get the list of primary keys based on the condition.
* @param condition Condition
* @return List<KeyType> of Primary Keys according to the Condition.
*/
public List<KeyType> getPrimaryKeyCollection(String condition,final Object... values);

/**
* Insert the Domain Object that is going to persist into the Database.
* @param object Domain Object which is going to persist into the Database
* @return KeyType Serializable value generated By Hibernate due to session.save().
*/
public KeyType insert(DomainObject object);

/**
* Update the Domain Object.
* @param object Domain Object that is being changed/updated.
* @return 1 if Domain Object is being successfully updated
* 0 if Exception Generation while updating the Object.
*/
public int update(DomainObject object);


/**
* Deleting Domain Object.
*
* @param object
* Domain Object that is going to be delete.
* @return the int
*/
public int delete(DomainObject object);

/**
* Delete Object whose oid(Object Identifier) matched with given Primary Key.
* @param id Identifier value.
*/
public void deleteById(KeyType id);


}

GenericSpringDAOImpl.java

public abstract class GenericDAOSpringImpl<DomainObject extends Serializable, KeyType extends Serializable> implements Serializable, GenericDAO<DomainObject, KeyType>{

@Autowired
private NamedParameterJdbcTemplate jdbcTemplate;

RowMapper<DomainObject> rowMapper;

public NamedParameterJdbcTemplate getJdbcTemplate() {
return jdbcTemplate;
}

public void setJdbcTemplate(NamedParameterJdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}

public List<DomainObject> getList(){
/*Develop Code which return DomainObjects
* One way is pass query to getList() but not good approch
*/
return new ArrayList<DomainObject>();
}

/*
Other methods also required to implements.
*/
}

这里的域对象是任何对象,如学生、学校、教师等。

最佳答案

您是否正在寻找 Spring Data JPA 提供的实现? http://projects.spring.io/spring-data-jpa/

关于java - Generic Dao 的设计模式,Spring 中的服务层,不使用 Hibernate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27815669/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com