摘要:
一、概述 Session的缓存是一块内存空间,在这个内存空间存放了相互关联的Java对象,这个位于Session缓存内的对象也被称为持久化对象,Session负责根据持久化对象的状态来同步更新数据库。 Session的缓存是内置的,不能被拆卸,也被称为Hibernate的第一级缓存。此外,SessionFactory有一个内置缓存和一个外置缓存,内置缓存不能被拆卸,而外置缓... 阅读全文
摘要:
一、单向n-1 单向n-1关联只需从n的一端可以访问1的一端。 域模型: 从Order到Customer的多对一单向关联。Order类中定义一个Customer属性,而在Customer类不用存放Order对象的引用。 Order.java public class Order{ private Integer uid; private String name; p... 阅读全文
摘要:
一、映射对象标识符 Java语言按内存地址来识别或区分同一个类的不同对象,而关系数据库按主键值来识别或区分同一个表的不同记录。Hibernate使用对象标识符(OID)来建立内存中的对象和数据库表中的记录的对应关系,对象的OID和数据库表的主键对应,为了保证OID的唯一性和不可变性,应该让Hibernate,而不是应用程序来为OID赋值。 Hibernate推荐在数据表中使用... 阅读全文
摘要:
一、概述 Session接口是Hibernate向应用程序提供的操纵数据库最主要的接口,它提供了基本的保存、更新、删除和加载Java对象的方法。 Session具有一个缓存,位于缓存中的对象称为持久化对象,它和数据库相关记录对应。 Session能够在某些时间点按照缓存中对象的变化来执行相关SQL语句,来同步更新数据库,这一过程称为清理缓存(flush)。 ... 阅读全文
摘要:
一、Hibernate的核心接口 所有的Hibernate应用中都会访问Hibernate的5个核心接口。 (1)Configuration接口: 配置Hibernate,启动Hibernate,创建SessionFactory对象。 (2)SessionFactory接口: 初始化Hibernate,创建Session。 (3)Session接口:... 阅读全文
摘要:
一、对象的持久化 狭义的理解: 持久化仅仅指把对象永久的保存到数据库中。 广义的理解: 持久化包括和数据库相关的各种操作。 保存: 把对象永久保存到数据库中。 更新: 更新数据库中对象的状态。 删除: 从数据库中删除一个对象。 查询: 根据特定的查询条件,把符合查询条件的一个或者多个对象加载到内存中。 二、ORM ... 阅读全文
摘要:
一、原因 用户重复提交表单在某些场合将会造成非常严重的后果。例如,在使用信用卡进行在线支付的时候,如果服务器的响应速度太 慢,用户有可能会多次点击提交按钮,而这可能导致那张信用卡上的金额被消费了多次。因此,重复提交表单会对你的系统带来逻 辑影响,必须采取一些措施防止这类情况的发生。 用户重复提交同一个HTML表单的原因有: 一、快速多次点击了提交按钮;二、提交表单后... 阅读全文
摘要:
目录: 一、值栈 二、OGNL表达式 一、值栈(ValueStack) 1.定义 ValueStack贯穿整个Acton的生命周期,每个Action类的对象实例都拥有一个ValueStack对象,相当于一个数据中转站,在其保存当前的Action对象和其他对象。 2.结构 在ValueStack对象内部有两个逻辑部分。 Obje... 阅读全文
摘要:
一、文件的上传 1.单个文件上传 Struts2使用拦截器完成了文件的上传,而且底层使用的也是FileUpload开源组件。 客户端注意事项: (1)method="post" (2)enctype="multipart/form-data" (3) 在Action编写文件上传时,需要定义三个属性。 (1)文件类型File,属性名与表单中的file的name属性名一... 阅读全文
摘要:
一.概述 1.初识拦截器 Interceptor 拦截器类似前面学过的过滤器,是可以在action执行前后执行的代码,是我们做Web开发经常用到的技术。比如:权限控制、日志等。我们也可以将多个Interceptor 连在一起组成Interceptor 栈。 Struts2拦截器,每个拦截器类只有一个对象实例,即采用单例模式,所有引用这个拦截器的Action都共享这一拦截器类... 阅读全文