传智播客java学习 OA机构设计
今天是学习oa的第二天,学的知识点比较多,我做了笔记:
Service层设计:
1,先有get(Long),因为还想要获取其他对象(不是T),所以再定义一个get(Class, Long)
2, 为什么有get(Class, Long),但不加上以下两个方法呢?
<E> E delete(Class<E> clazz, Long id);
<E> List<E> findAll(Class<E> clazz);
可以加上,但是在程序中只使用到了get(Class, Long),所以就只定义了get方法。
3,为什么使用Long型的主键呢?也可以使用Serializable类型,因为Session.get()方法就是接受这个类型。
包 资源(类、接口等)
cn.itcast.oa.service.daosupport ServiceBase(原名为DaoBase)
ServiceImplBase(原名为DaoBaseImpl)
cn.itcast.oa.service Service的接口
Cn.itcast.oa.service.impl Service的实现类
说明: Service接口可以通过继承ServiceBase得到增删改查的方法声明。Service的实现类可以通过继承ServiceImplBase得到增删改查方法的实现。通过ServiceImplBase中的getSession()与getJbpmContext()方法可以方便的获得Session与JbpmContext。
使用反射获取类型参数的真实类型的代码如下:
public DaoBaseImpl () {
Type type = this.getClass().getGenericSuperclass();
ParameterizedType pt = (ParameterizedType) type;
this.clazz = (Class<T>) pt.getActualTypeArguments()[0];
}
事务管理:
使用过滤器加 ThreadLocal 实现
因为Session可以通过JbpmContext.getSession()获得,所以只需管理 JbpmContext即可;过滤器拦截*.do的请求。
一个请求(线程)使用同一个JbpmContext 如果请求中没有使用JbpmContext或Session,就不要创建JbpmContext。
在过滤器中关闭JbpmContext时,也要调用 ThreadLocal.remove(),因为Web容器有线程池,就是两次请求有可能是使用的同一个线程。
JbpmContextFilter中的相关代码:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,ServletException {
try {
chain.doFilter(request, respons
相关文档:
作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从。我想就我自己读过的技术书籍中挑选出来一些,
按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水平的Java程序员们。
一、Java编程入门类
对于没有Java编程经验的Java程序员要入门,随便读什么入门书籍都一 ......
使用J2SE API读取Properties文件的六种方法
1。使用java.util.Properties类的load()方法
示例: InputStream in = lnew BufferedInputStream(new FileInputStream(name));
Properties p = new Properties();
p.load(in);
2。使用java.util.ResourceBundle类的getBundle()方法
示例: ResourceBundle rb = Resou ......
编辑工程的.project文件:
添加
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
到
<natures>
…
& ......
方法一:
Map map = new HashMap();
Iterator iter = map.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
Object key = entry.getKey();
Object val = entry.getValue();
}
方法二:
Map map = n ......
今天我学习了徐老师讲的Hiberbate缓存知识,我上课做了简单的笔记:
缓存类型
一.事务范围:位于当前工作单元,不能并发访问
二.进程范围:多个工作单元共享,可并发访问,可存储实例本身也可存散列数据,然后在
& ......