`
文章列表
  //功能:统计包含汉字的字符个数 //说明:汉字占2个字符,非汉字占1个字符 function checksum(chars) { var sum = 0;  for (var i=0; i<chars.length; i++) {      var c = chars.charCodeAt(i);      if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) {      sum++;      }   ...
Uploadify是JQuery的一个上传插件,实现的效果非常不错。 支持批量上传; 带进度显示; 判断文件大小; 下面分别使用commons-fileupload 和struts2来实现一个简单的上传功能。 1,先介绍前台 首先从官网下载Uploadify,本实例使用的uploadify-v3.1 目录结构:
  抓取策略:抓取关联对象。   1单端代理的批量抓取: select   join   默认是select  保持默认,同fetch="select",如: <many-to-one name="classes" column="classesid" fetch="select"/> fetch="select",另外发送一条select语句抓取当前对象关联实体或集合 <hibernate-mapping>      <class name= ...
  hibernate查询缓存   查询缓存是针对普通属性结果集的缓存 对实体对象的结果集只缓存id   查询缓存的生命周期,当前关联的表发生修改,那么查询缓存生命周期结束   查询缓存的配置和使用:      * 在hibernate.cfg.xml文件中启用查询缓存,如:      <property name="hibernate.cache.use_query_cache">true</property>      * 在程序中必须手动启用查询缓存,如:      query.setCacheable(true); ...
  sessionFactory可以管理二级缓存。 Hibernate默认开启二级缓存。   二级缓存也称进程级的缓存或SessionFactory级的缓存,二级缓存可以被所有的session共享 二级缓存的生命周期和SessionFactory的生命周期一致,SessionFactory可以管理二级缓存   二级缓存的配置和使用:      * 将echcache.xml文件拷贝到src下      * 开启二级缓存,修改hibernate.cfg.xml文件
  hibernate一级缓存    一级缓存很短和session的生命周期一致,一级缓存也叫session级的缓存或事务级缓存   那些方法支持一级缓存:      * get()      * load()      * iterate(查询实体对象)      如何管理一级缓存:      * session.clear(),session.evict()      如何避免一次性大量的实体数据入库导致内存
  Hibernate对悲观锁和乐观锁的支持,主要解决并发问题。 数据库隔离级别越高,并发性越差。 锁具有排他性,锁住别人就访问不了。 悲观锁:并发性低,悲观锁一般依赖于数据库机制实现的,在整个过程中将数据锁定,其他任何用户都不能读取或修改,hibernate做了一些封装。 一般适合短事务情况。 实际上是冲突检测。 悲观锁实现:                             session.beginTransaction(); // LockMode 锁模式                             Inventory inv = (Invento ...
  1,set映射:set是无序的  2,List映射,list是有序的,表中需要保存一个索引序列存储顺序下标。 3,数组映射,跟list一样。 4,Map映射,key-value 映射关系: <hibernate-mapping>
  复合(联合)主键映射: 复合主键映射一般采用把主键相关的字段拿出来,单独形成一个类,该类必须实现序列化接口,(在同一个JVM中没关系,如果跨JVM再想访问,必须序列化)。 复合主键一般与业务结合的很紧密,不建议使用。 通常将复合主键相关的属性,单独放到一个类中 * 此类必须实现序列化接口          * 覆写hashcode和equals方法 映射关系: <hibernate-mapping> <class name="com.bjsxt.hibernate.FiscalYearPeriod" table=" ...
  Component组件映射:对象模型细粒度划分,复用率提高  component是某个实体的逻辑组成部分,它与实体的根本区别是没有oid,component也称为值对象(DDD、领域驱动设计模型)。 采用component映射的好处:它实现了对象模型的细粒度划分,层次更分明,复用率更高。 映射关系: <hibernate-mapping> <class name="com.bjsxt.hibernate.User" table="t_user">            <id name="id ...
  继承映射: 1,一个类继承树映射到一张表。一般采用第一种。效率高,资源占用率低。  1、理解如何映射            因为类继承树肯定是对应多个类,要把多个类的信息存放在一张表中,必须有某种机制来区分哪些记录是属于哪个类的。 这种机制就是,在表中添加一个字段,用这个字段的值来进行区分。用hibernate实现这种策略的时候,有如下步骤: 父类用普通的<class>标签定义 在父类中定义一个discriminator,即指定这个区分的字段的名称和类型 如:<discriminator column=”XXX” type=”
  Jdk动态代理,CGLib字节码生成 如果目标对象实现了接口,可以使用jdk动态代理和CGLib。 如果没有实现接口,只能使用CGLib。 Jdk动态代理要实现一个接口:InvocationHandler   public class SecurityHandler implements InvocationHandler { //目标对象,对该目标对象生成代理          private Object targetObject;          //生成代理对象,当生成完代理对象,调用代理对象上的方法时,默认先调用invoke
  Hibernate lazy策略:延迟加载、懒加载。 代理的概念:只有真正使用该对象的时候才会创建。 Lazy在hibernate上:在真正使用的时候才会发出sql查询。 实现原理:采用第三方库cglib,对类生成代理类。代理可以控制源对象,并且可以对源对象的功能进行增强。 Cglib和jdk动态代理的区别: 1,cglib能够对类进行代理,jdk动态代理只能对实现了接口的类进行代理。 2,Jdk动态代理类和原类实现相同的接口 3,Cglib 代理类继承原类,生成一个子类。  
  单向映射   hibernate多对多关联映射(单向User---->Role)   具体映射方式:          <set name="roles" table="t_user_role">                    <key column="userid"/>                    <many-to-many class="com.bjsxt.hibernate.Role" column="roleid&q ...
  hihernate一对多关联映射(双向Classes<----->Student)   一对多双向关联映射:          * 在一一端的集合上使用<key>,在对方表中加入一个外键指向一一端          * 在多一端采用<many-to-one>          注意:<key>标签指定的外键字段必须和<many-to-one>指定的外键字段一致,否则引用字段的错误          如果在”一“一端维护一对多关联关系,hibernate会发出多余的udpate语句,所以我们一般在多 的一端来维 ...
Global site tag (gtag.js) - Google Analytics