`
yangxianjiangg
  • 浏览: 59482 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
各种企业应用几乎都会碰到任务调度的需求,就拿论坛来说:每隔半个小时生成精华文章的RSS文件,每天凌晨统计论坛用户的积分排名,每隔30分钟执行锁定用户解锁任务。对于一个典型的MIS系统来说,在每月1号凌晨统计上个月各部门的业务数据生成月报表,每半个小时查询用户是否已经有快到期的待处理业务……,这样的例子俯拾皆是,不胜枚举。     Quartz 在开源任务调度框架中的翘首,它提供了强大任务调度机制,难能可贵的是它同时保持了使用的简单性。Quartz 允许开发人员灵活地定义触发器的调度时间表,并可以对触发器和任务进行关联映射。Spring为创建Quartz的Scheduler、Trigger和Jo ...
C3P0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象。  c3p0-config>   <default-config>   <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->   <property name="acquireIncrement">3</property>   <!--定义在从数据库获取新连接 ...
JPA(Java Persistence API), 是EJB3.0的组成部分, 它显著简化了EJB持续性并提供了一个对象关系映射方法, 该方法使开发者可以采用声明方式定义如何通过一种标准的可移植方式将Java对象映射到关系数据库表.Hibernate从3.2开始, 就开始兼容JPA, 可以通过注释的方式, 代替原有的xml映射方式.引入Hibernate annotation后, 我们需要进行如下准备, 下载依赖的类库.Hibernate core 3.2+ Hibernate annotation JPA 【示例】首先先来看一个使用Annotation后的实体配置:   Company. ...
load方法抛异常是指 在使用该对象的数据时,数据库中不存在该数据时抛异常,而不是在创建这个对象时。   get方法首先查询session缓存,没有的话查询二级缓存,最后查询数据库;反而load方法创建时首先查询session缓存,没有就创建代理,实际使用数据时才查询二级缓存和数据库。   总之对于get和load的根本区别,一句话,hibernate对于load方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,如果在使用过程中发现了问题,只能抛异常;而对于get方法,hibernate一定要获取到真实的数据,否则返回null。   
让我们先来看看Hibernate的文档时怎么说的,关于LockMode: LockMode FORCE           Similiar to UPGRADE except that, for versioned entities, it results in a forced version increment. LockMode NONE           No lock required. LockMode READ           A shared lock. Objects in this lock mode were read from the database ...
查询缓存是针对普通属性结果集的缓存,对实体对象的结果集只缓存id 查询缓存的生命周期,当前关联的表发生修改,那么查询缓存生命周期结束 查询缓存的配置和使用:     * 在hibernate.cfg.xml文件中启用查询缓存,如:     <property name="hibernate.cache.use_query_cache">true</property>     * 在程序中必须手动启用查询缓存,如:     query.setCacheable(true); 下面举例说明一下查询缓存的使用: /** * 开 ...
Hibernate 使用JUnit 测试 出现这个错误,经查是包冲突。 在Hibernate 3.2.6.ga 中的 cglib 是 cglib-2.1.3.,jar 使用 cglib-2.2.jar 则出现以上问题。 将包换掉,问题解决。 看来运用一种框架,还是尽量使用其原始的jar包构成的环境。以避免出现一些不可预知的错误。 扩展一下,了解下 cglib是什么? CGlib概述: cglib(Code Generation Library)是一个强大的,高性能,高质量的Code生成类库。它可以在运行期扩展Java类与实现Java接口。 cglib封装了asm,可以在运行 ...
hql查询单表部分字段: 在hibernate中,用hql语句查询实体类,采用list方法的返回结果为一个List,该List中封装的对象分为以下三种情况: 1.查询全部字段的情况下,如"from 实体类",list中封装的对象为实体类本身,各属性都将得到填充。 2.只查询一个字段,默认情况下,list中封装的是Object对象。 3.查询两个或两个以上的字段,默认情况下,list中封装的是Object[],长度与所查询的字段数一致。 对于后两种情况,用标签遍历时不太方便,因为无法直接转换成实体类的对象。比较简单的解决方法是: 在hql中使用 select new ...
类MessageResources可以使开发者方便地支持多语言,包括支持多时间格式和数字格式。使用资源包的另一个好处是允许开发者将标签字符串集中存储在一个位置,而不是分散在不同的JSP页面里。例如,对于每个用户的名字的标签"First Name" ,我们可以将它写在资源包中,在适当的地方通过Struts标签简单的进行引用: <bean:write key="label.first.name"/>   这样做将会让你对程序的更改变的简单容易,你不必在每一个JSP页面里更改标签的内容了。   用法   使用消息资源包需要你做下面的事情: ...
struts2.0的标签库(简介)用过struts1.x的人都知道,标签库有html、bean、logic、tiles,而struts2.0里的标签却没有分类,只用在jsp头文件加上<%@ taglib prefix="s" uri="/struts-tags" %>就能使用struts2.0的标签库 下面就介绍下每个标签的用法(有错请指正): A: <s:a href=""></s:a>-----超链接,类似于html里的<a></a><s:action > ...
在说明s:iterator标签的使用前,先了解下struts2中的Value Stack。这里参考了webwork中对Value Stack的描述,由于struts2是在webwork的基础上进行升级的,因此webwork对于Value Stack的表述同样适用于struts2。在这里不描述Value Stack具体做什么,但 ...

synchronized

概述synchronized ,代表这个方法加锁,相当于不管哪一个线程A每次运行到这个法时,都要检查有没有其它正在用这个方法的线程B(或者C D等),有的话要等正在使用这个方法的线程B(或者C D)运行完这个方法后再运行此线程A,没有的 ...
Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。另外,Java 还为每个原始类型提供了封装类(Wrapper)。        如果需要一个整型变量,是使用基本的 int 型呢,还是使用 Integer 类的一个对象呢?如果需要声明一 ...
在初始化一个类,生成一个实例的时候;newInstance() 和 new 有什么区别?   用newInstance与用new是有区别的,区别在于创建对象的方式不一样,前者是使用类加 载机制,那么为什么会有两种创建对象方式?这个就要从可伸缩、可扩展,可重用等软件思 想上解释了。   Java中工厂模式经常使用newInstance来创建对象,因此从为什么要使用工厂模式上也可 以找到具体答案。   例如:   Class c = Class.forName(“A”);factory = (AInterface)c.newInstance();   其中AInterface是A的接 ...
MyEclipse 8.6的主要改进是在团队协作和集中工作环境的集中配置管理方面。同时 MyEclipse 8.6还包含了上百个功能的改进和新特性,这些新功能和特性将让MyEclipse 8.6用户在开发代码,测试,以及部署应用方面都得到极大的便利。相信MyEclipse 8.6下载地址发布的时候 会让MyEclipse开发者们再次兴奋一下的。 MyEclipse 8.6 M1主要改进包括: MyEclipse 8.6 M1引入了一个全新的JavaScript编辑器,该编辑器提供了更好的JavaScript/HTML高亮标记和代码支持,同时提供了更为精确的语法校验功能 MyEcli ...
Global site tag (gtag.js) - Google Analytics