- 浏览: 543337 次
- 性别:
最新评论
-
superich2008:
logback配置文件的改动会导致应用重新加载,多改动几次后就 ...
Chapter 3: Logback configuration -
chenzhihui:
不是可以在log4j中配置以控制台或者文件方式保存日志的?
play记录日志 -
smilease:
很棒,正缺这个,非常感谢
bootstrap3-typeahead 自动补全 -
guangling13345:
[size=x-small][/size]
二级联动菜单 -
jacksondesign:
有,和YAML的格式有关,不知道有没有什么好的YAML格式的验 ...
(四)play之yabe项目【页面】
文章列表
springMVC文件上传
增加上传组件依赖:
In the case of the CommonsMultipartResolver, you need to use commons-fileupload.jar.
apache-commons-io.jar
apache-commons-fileupload.jar
<!-- fileupload -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-i ...
springMVC基本原理
第一步:用户发出请求,如"http://localhost:8080/springmvc/user/reg?method=reg&name=zs" 第二步:服务器接收到请求,发现存在DispatcherServlet,则交给DispatcherServlet进行处理 DispatcherServlet内部通过检查HandlerMapping中是否存在对应的URL,如果有,则交给对应的Controller进行处理
/** List of HandlerMappings used by this ...
先了解历史,springMVC使用XML配置的方式
springMVC需要的部分依赖
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
&l ...
并发访问 可能引发的问题:更新丢失
(A线程把name属性改了,B线程马上改age属性,但是B线程中的name属性仍然是改之前的值,这就造成了A线程对name的更新丢失了) ------------------------
解决方案 *悲观锁 LockOptions.U ...
抓取策略: 什么是抓取策略? 即拥有了一个实体对象,想要得到它的关联对象的策略 什么是批量抓取策略? 即拥有了一批实体对象,想要得到这批实体对象的关联对象的策略---------------------------------------------------------------------------------在many-to-one/one-to-one上面(多的一端,如ContactPerson)定义抓取策略
1个对象---关联对象 单一对象--get()/load() ContactPerson -fetch="select" ( ...
hibernate缓存策略---调整性能。主要目的:提高查询效率从内存中获取对象,不需要与数据库进行交互---提高查询性能缓存: *一级缓存 session级别 只在session打开有效 生命周期:与session相关 *二级缓存 sessionFactory级别(全局缓存) *查询缓存 sessionFactory级别(全局缓存)缓存的命中:通过什么key放到内存中,就通过什么key到内存中取 一级、二级缓存,缓存的是key是ID,缓存的value是实体对象查询缓存,缓存的key是HQL语句与参数,缓存的value: ...
HQL查询
package org.leadfar.hibernate.model;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Random;
import junit.framework.TestCase;
import ...
对方是实体类
用关联映射 one-to-many many-to-one 等
对方不是一个实体类,比如String,Integer.Address(无id字段)等,用集合来存储---集合映射ListSetMap删除的时候,会自动删除对应的表中的所有数据(类似于级联删除)
===========================================================================
Set集合映射(不重复)
package org.leadfar.hibernate.model;
import java.util.HashS ...
组合关系--体现整体与部分同存同亡--数据存储到一张表中,提交检索速度--数据都在一张表中,不存在延迟加载的问题,使用load或get都一样--一个类持有多个component,字段需取别名以示区分
package org.leadfar.hibernate.model;
public class Person {
private int id;
private String name;
private Address work;
private Address home;
Person() {
}
public Address ...
多对多关联,都会引入第三张表
package org.leadfar.hibernate.model;
import java.util.HashSet;
import java.util.Set;
public class Person {
private int id;
private String name;
private Set<Role> roles;
Person(){}
//给人分配角色
public void addRole(Role role) {
if(roles==null) {
...
一对一关联关系,当需要对2个对象进行独立对待时,分2个类来完成映射
主键关联映射,没有额外字段维护关联,id值保持一致
package org.leadfar.hibernate.model;
public class Person {
private long id;
private String name;
private IdCard idcard;
Person(){}
public long getId() {
return id;
}
public IdCard getIdcard() {
return id ...
使用Hibernate建立树形结构
递归查询子节点,会发出N多次select查询
可以在Node中定义一个字段,额外记录其与parent的id间的关系,如1|3|6|12
然后使用like进行模糊查询,只需要查询1次即可找出所有的child。
虽然模糊查询慢,但只发出1条语句,所以效率可能比发出N多次递归查询快!
实体类
package org.leadfar.hibernate.model;
import java.util.Set;
public class Node {
private int id;
private String name; ...
多对一双向关联
重要属性 inverse=true
作用:
强制在多的那端维护关联,避免在一的一端对集合操作出现问题,因为操纵集合维护关系有很多注意事项,一不留神就会出现问题!
设置inverse=true后,对集合进行操作,不会对 ...
单向一对多关联
一:group Set存储contactPerson对象多:contactPerson
在一的一方维护关联关系
一端持有多方的引用,为一个集合,Set集合比较常用
单向一对多关联---lazy延迟策略set集合上可以定义的lazy属性: -true 默认 -false -extra --> 除非访问到对象属性,否则不会发出查询对象的具体属性的语句! 比如,求集合的size(),发出的查询语句时select count(*) 效率高! 比如,判断集合是否为空,isEmpty() ...
多对一单向关联,只能从多的一端导航到一的一端
实体类
package org.leadfar.hibernate.model;
public class ContactPerson {
private int id;
private String name;
private Group group;
public ContactPerson() {
// TODO Auto-generated constructor stub
}
public ContactPerson(String name) {
// TODO A ...