- 浏览: 63145 次
- 性别:
- 来自: 上海
最新评论
-
and1990:
哈哈。。。很不错,看过马老师的视频吧???
面向对象 -
renmin520:
谢谢分享
谢谢
Button事件监听
文章列表
// jsp
<%@ page language="java" import="java.util.*,java.sql.*"
pageEncoding="GB18030"%>
<%@ page import="com.bjsxt.registration.service.*"%>
<%@ page import="com.bjsxt.registration.model.*"%>
<%
String path = request.getC ...
// model
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Transient;
@Entity
pub ...
1、hibernate抓取策略(单端代理的批量抓取)(抓取当前对象关联实体或集合):保持默认,同fetch="select",如:<many-to-one name="classes" column="classesid" fetch="select"/> fetch="select",另外发送一条select语句抓取当前对象关联实体或集合
2、hibernate抓取策略(单端代理的批量抓取):设置fetch="join",如:
...
1)hibernate一级缓存:一级缓存很短和session的生命周期一致,一级缓存也叫session级的缓存或事务级缓存
那些方法支持一级缓存:
* get()
* load()
* iterate(查询实体对象)
如何管理一级缓存:(一级缓存无法取消)
* session.clear(),session.evict()
如何避免一次性大量的实体数据入库导致内存溢出
* 先flush,再clear
如果数据量特别大,考虑采用jdbc实现,如果jdbc也不能满足要求可 ...
在hql中关键字不区分大小写,但是属性和实体类名区分大小写
1、简单属性查询【重要】
* 单一属性查询,返回结果集属性列表,元素类型和实体类中相应的属性类型一致
* 多个属性查询,返回的 ...
// model
import java.util.Set;
public class Node {
// 标识符
private int id;
// 节点名称
private String name;
// 层次
private int level;
// 是否叶子节点
private boolean leaf;
// 父节点 * --- 1
private Node parent; // 一的一端
// 子节点 1 --- *
private Set<Node> children; // 多的一端 ...
1、悲观锁(处理并行问题):悲观锁的实现,通常依赖于数据库机制,在整个过程中将数据锁定,其它任何用户都不能读取或修改//model
public class Inventory {
private int itemNo;
private String itemName;
private int quantity;
public int getItemNo() {
return itemNo;
}
public void setItemNo(int itemNo) {
this.itemNo = itemNo;
}
publ ...
1、component(组件)映射:在hibernate中,component是某个实体的逻辑组成部分,它与实体的根本区别是没有oid,component可以成为是值对象(DDD)
采用component映射的好处:它实现了对象模型的细粒度划分,层次会更分明,复用率会更高//model
public class Contact {
private String email;
private String address;
private String zipCode;
private String contactTel;
pub ...
每棵继承树映射成一张表
1、理解如何映射
因为类继承树肯定是对应多个类,要把多个类的信息存放在一张表中,必须有某种机制来区分哪些记录是属于哪个类的。这种机制就是,在表中添加一个字段,用这个字段的值来进行区分。用hibernate实现这种策略的时候,有如下步骤:1)父类用普通的<class>标签定义、2) 在父类中定义一个discriminator,即指定这个区分的字段的名称和类型,如:<discriminator column=”XXX” type=”string”/>、3)子类使用<subclass>标签定义,在定义subcl ...
hibernate lazy策略可以使用在:
* <class>标签上,可以取值:true/false
* <property>标签上,可以取值:true/false需要类增强工具
* <set><list>标签上,可以取值:true/false/extra
* <one-to-one><many-to-one>单端关联上,可以取值:false/proxy/noproxy
lazy概念:只有真正使用该对象时,才会创建,对于hibe ...
hibernate多对多关联映射(单向User---->Role)
具体映射方式:<set name="roles" table="t_user_role">
<key column="userid"/>
<many-to-many class="com.bjsxt.hibernate.Role" column="roleid"/>
</set>import java.util.Set;
public class User ...
hihernate一对多关联映射(单向Classes----->Student)
一对多关联映射利用了多对一关联映射原理
多对一关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是多指向一(当加载多的一端时可以加载一的一端)
一对多关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是一指向多(当加载一的一端时可以加载多的一端)
也就是说一对多和多对一的映射策略是一样的,只是站的角度不同
在一的一端维护关系的缺点:
* 如果将t_student表里的classesid字段设置为非空,则无法保存
* 因为不是在studen ...
session flush测试:
session flush方法主要做了两件事:
* 清理缓存
* 执行sql
session在什么情况下执行flush
* 默认在事务提交时
* 显示的调用flush
* 在执行查询前,如:iterate
hibernate按照save(insert),update、delete顺序提交相关操作 import java.util.Date;
public class User1 {
private String id;
...
hibernate一对一唯一外键关联映射(单向关联Person---->IdCard)(是多对一的特例,只是限制了多的一端)
一对唯一外键关联映射是多对一关联映射的特例
可以采用<many-to-one>标签,指定多的一端的unique=true,这样就限制了多的一端的多重性为一
通过这种手段映射一对一唯一外键关联// annotation映射
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
impor ...
hibernate一对一主键关联映射(单向关联Person---->IdCard)
一对一主键关联映射:让两个实体对象的id保持相同,这样可以避免多余的字段被创建
具体映射: <id name="id">
<!-- person的主键来源idCard,也就是共享idCard的主键 -->
<generator class="foreign">
<param name="property">idCard</param>
< ...