My Holder interface for bean and set management
2009-05-29 18:49
387 查看
这是一个关键接口,用以彻底隔离数据访问层,业务逻辑层与输出输入表现层
/*
* Copyright ©2009 julewan, Inc.
* All Rights Reserved.
*/
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import core.Builder;
/**
* @author Hopenful
* @date 2009-5-28
*
* 所有的holder都实现相同的接口,以实现标准化操作
*
*
**/
public interface Holder <B>{
/**
* bean 有如integer,long,String等系统基本类型
* 也有常见的如user,role,work,item等业务类型
* 这个判断是用以区分这二者的,因为二者的处理方式将完全相反
* @return
*/
public boolean isEntityHolder();
/**
* 返回被管理的类型
* 如果功能够强大的话,其实可以借助继承与泛型的力量来做
* 但是目前这样做代价太大了
* @return
*/
public Class<B> getBeanType();
/**
* 如果是entity,则一般来说是有主键的
* @return
*/
public String[] getKeys();
/**
* 返回entity的所有属性
* @return
*/
public String[] getProperties();
/**
* 返回entity属性的类型
* @param property
* @return
*/
public Class<?> getPropertyType(String property);
/**
* 从字符串反序列化为对象,这是为restful view做准备的
* @param str
* @return
*/
public B fromString(String str);
/**
* 将对象序列化为字符串,这是为restful view做准备的
* @param b
* @return
*/
public String toString(B b);
/**
* new 一个新对象,然后放入session中
* @return
*/
public B create();
/**
* 根据主键获取一个对象
* 如果没有给出主键,则从session中获取那个新bean
* @param keys
* @return
*/
public B get(final Object ... keys);
/**
* 即使是简单的,也必须装入一个Set中,这样为性能优化留下空间!
* @param set
* @param setArgs
* @return
*/
public List<B> find(final Bean.Set<B> set, final Object...setArgs);
/**
* 返回对Set由给定计算方式的转换后的结果
*
* @param <RESULT>
* @param builder
* @param set
* @param setArgs
* @return
*/
public <RESULT> RESULT fetch(final Builder<Collection<B>, RESULT> builder, final Bean.Set<B> set, final Object...setArgs);
/**
* 保存, 统一了insert和update方法
* @param it
*/
public void save(final Iterator<B> it);
/**
* 保存
* 如果没有参数,则表示将Session中new bean保存下来
* @param b
*/
public void save(final B ... b);
/**
* 批量保存
* @param set
* @param propertyValueMap
* @param setArgs
*/
public void save(final Bean.Set<B> set, final Map<String, Object> propertyValueMap, final Object...setArgs);
/**
* 批量保存,
* 这个方法只是将propertyValueMap用String[]与args对应的方法表现出来,
* 也就是说propertyValuesAndSetArgs的前properties.length个参数实际上是对应的propertyValue.
* @param set
* @param properties
* @param propertyValuesAndSetArgs
*/
public void save(final Bean.Set<B> set, final String[] properties, final Object...propertyValuesAndSetArgs);
/**
* 删除
* @param it
*/
public void remove(final Iterator<B> it);
/**
* 删除
* 如果没有参数,则为删除session中的new beans
* @param b
*/
public void remove(final B ... b);
/**
* 批量删除
* 如果Set是ALL,则就是clear all
* @param set
* @param setArgs
*/
public void remove(final Bean.Set<B> set, final Object...setArgs);
}
/*
* Copyright ©2009 julewan, Inc.
* All Rights Reserved.
*/
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import core.Builder;
/**
* @author Hopenful
* @date 2009-5-28
*
* 所有的holder都实现相同的接口,以实现标准化操作
*
*
**/
public interface Holder <B>{
/**
* bean 有如integer,long,String等系统基本类型
* 也有常见的如user,role,work,item等业务类型
* 这个判断是用以区分这二者的,因为二者的处理方式将完全相反
* @return
*/
public boolean isEntityHolder();
/**
* 返回被管理的类型
* 如果功能够强大的话,其实可以借助继承与泛型的力量来做
* 但是目前这样做代价太大了
* @return
*/
public Class<B> getBeanType();
/**
* 如果是entity,则一般来说是有主键的
* @return
*/
public String[] getKeys();
/**
* 返回entity的所有属性
* @return
*/
public String[] getProperties();
/**
* 返回entity属性的类型
* @param property
* @return
*/
public Class<?> getPropertyType(String property);
/**
* 从字符串反序列化为对象,这是为restful view做准备的
* @param str
* @return
*/
public B fromString(String str);
/**
* 将对象序列化为字符串,这是为restful view做准备的
* @param b
* @return
*/
public String toString(B b);
/**
* new 一个新对象,然后放入session中
* @return
*/
public B create();
/**
* 根据主键获取一个对象
* 如果没有给出主键,则从session中获取那个新bean
* @param keys
* @return
*/
public B get(final Object ... keys);
/**
* 即使是简单的,也必须装入一个Set中,这样为性能优化留下空间!
* @param set
* @param setArgs
* @return
*/
public List<B> find(final Bean.Set<B> set, final Object...setArgs);
/**
* 返回对Set由给定计算方式的转换后的结果
*
* @param <RESULT>
* @param builder
* @param set
* @param setArgs
* @return
*/
public <RESULT> RESULT fetch(final Builder<Collection<B>, RESULT> builder, final Bean.Set<B> set, final Object...setArgs);
/**
* 保存, 统一了insert和update方法
* @param it
*/
public void save(final Iterator<B> it);
/**
* 保存
* 如果没有参数,则表示将Session中new bean保存下来
* @param b
*/
public void save(final B ... b);
/**
* 批量保存
* @param set
* @param propertyValueMap
* @param setArgs
*/
public void save(final Bean.Set<B> set, final Map<String, Object> propertyValueMap, final Object...setArgs);
/**
* 批量保存,
* 这个方法只是将propertyValueMap用String[]与args对应的方法表现出来,
* 也就是说propertyValuesAndSetArgs的前properties.length个参数实际上是对应的propertyValue.
* @param set
* @param properties
* @param propertyValuesAndSetArgs
*/
public void save(final Bean.Set<B> set, final String[] properties, final Object...propertyValuesAndSetArgs);
/**
* 删除
* @param it
*/
public void remove(final Iterator<B> it);
/**
* 删除
* 如果没有参数,则为删除session中的new beans
* @param b
*/
public void remove(final B ... b);
/**
* 批量删除
* 如果Set是ALL,则就是clear all
* @param set
* @param setArgs
*/
public void remove(final Bean.Set<B> set, final Object...setArgs);
}
相关文章推荐
- Local and Remote Interfaces cannot have duplicate interface for bean UserManagerBean错误
- Local and Remote Interfaces cannot have duplicate interface for bean UserManagerBean错误
- USBDM Debugger interface for Freescale RS08,HCS08,HCS12,Coldfire and ARM-Kinetis Devices.
- Constraints for override and explicit interface implementation methods are inherited from the base method, so they cannot be specified directly
- When the RTP port is set to 8005, why is 8006 used by RTP and 8007 for RTCP for all communications ?
- 转一篇blog,这个人思路蛮清晰的 [do you want to work for a company with uninvolved management and a sweatshop mentality in which you occasionally see those people superior to you?]
- 25 Useful Basic Commands of APT-GET and APT-CACHE for Package Management
- Network management system scheduling for low power and lossy networks
- spring 'arroudAspect' for bean class [com.dw.test.ArroudAspect] conflicts with existing, non-compatible bean definition of same name and class [com.dw.aspect.ArroudAspect]
- I have ordered my life and study for almost one day
- Effective Databases For Text And Document Management
- Create Vlan for Interface for Ubuntu and Fedore
- how to set up the remote accout who to connection and management mysql server
- MANUAL segment management on tablespace for AUD$ and FGA_LOG$ could lead to database hanging with gc
- No known class method for selector 'setImage:andName:'错误分析.//删除.h与.m文件时的注意事项
- Configuring the Character Set and Collation for Applications
- EJB3.0异常总结---javax.ejb.EJBException: Local and Remote Interfaces cannot have duplicate interface for
- C.Interface.And.Implementations—set的实现
- JPDA and Set up Tomcat for Remote Debugging
- Handbook of Research on User Interface Design and Evaluation for Mobile Technology