- 浏览: 160190 次
- 性别:
- 来自: 厦门
-
最新评论
-
zhongfenglin:
学车的经历 -
Tiny_小小:
...
网购的选择 -
jrjr200411:
楼主写的好!
面对大公司和小公司的选择 -
feelboy:
说的很好。
每周四十小时,你有多少是在为自己干活?
文章列表
一
介绍 本文并不想介绍Struts,Spring,Hibernate的原理系统架构等,本文地目的是通过一个较复杂地实例介绍如何整合Struts,Spring,Hibernate,网上现有的例子虽然也能达到目的,但功能都比较单一,复杂的例子时会有意想不到的麻烦。本文对读者假设已经具备了以上框架的基础知识。以及那些已经了解Struts,Spring,Hibernate的基本概念,但是还没有亲身在较复杂的项目中体验Struts+Spring+Hibernate的开发人员。
1 Struts 虽然不打算过多介绍Struts的原理,但是大概介绍一下还是有必要的。Struts本身就是 MVC 在 ...
参考(上、下):
http://blog.csdn.net/DL88250/archive/2010/11/03/5985750.aspx
http://blog.csdn.net/DL88250/archive/2010/11/03/5985757.aspx
hibernate.dialect 一个Hibernate Dialect类名允许Hibernate针对特定的关系数据库生成优化的SQL.
取值 full.classname.of.Dialect hibernate.show_sql 输出所有SQL语句到控制台. 有一个另外的选择是把org.hibernate.SQL这个log category设为debug。
eg. true | fals ...
1.Spring 架构图
Spring 是一个开源 框架,是为了解决企业 应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为J2EE 应用程序开发提供集成的框架。Spring 框架的功能可以用在任何J2EE 服务器中,大多数功能也适用于不受管理 的环境。Spring 的核心要点是:支持不绑定到特定J2EE 服务的可重用业务和数据访问对象。这样的对象可以在不同J2EE 环境(Web 或EJB )、独立应用程序、测试 环境之间重用。
集合映射
public class CollectionMapping {
private int id;
private String name;
private Set setValue;
private List listValue;
private String[] arrayValue;
private Map mapValue;
}
<class name="CollectionMapping" table="CollectionMapping">
<id name=&qu ...
多对多单向
User(多)对多(Role),一般都是通过中间表连接的,同样定义两个实体类User,Role,及两个映射文件
public class User {
private int id;
private String name;
private Set role;
}
public class Role {
private int id;
private String name;
}
<class name="many2many1.User" table="t_user"& ...
多对一单向
User(多)对Group(一),在User实体类里配置id,name,group(Group)属性
<!-- 无连接表 -->
<many-to-one name="group" column="groupid" not-null="true"/>
<!-- 有连接表
<join table="User_Group" optional="true">
<key column="user ...
一对多单向
定义两个实体类,及两个映射文件
一对多一的一端Class类及Class映射文件
public Class{
private int id;
private int name;
private Set student;
}
<!-- 无连接表 -->
<set name="student">
<key column="classid" />
<one-to-many class="Student&quo ...
一对一单向
定义两个类,两个映射文件一个工具类生成表
public class Group {
private int id;
private String name;
//这里省略setter,getter方法
}
public class User{
private int id;
private String name;
private Group group;
//这里省略setter,getter方法
}
<class name="many2on ...
hibernate抓取策略(单端代理的批量抓取)
保持默认,同fetch="select",如:<many-to-one name="classes" column="classesid" fetch="select"/>fetch="select",另外发送一条select语句抓取当前对象关联实体或集合
//fetch1,fetch2
public void testFetch1() {
Session session = null;
try {
ses ...
每棵继承树映射成一张表
1、理解如何映射 因为类继承树肯定是对应多个类,要把多个类的信息存放在一张表中,必须有某种机制来区分哪些记录是属于哪个类的。 这种机制就是,在表中添加一个字段,用这个字段的值来进行区分。用hibernate实现这种策略的时候,有如下步骤: 父类用普通的<class>标签定义 在父类中定义一个discriminator,即指定这个区分的字段的名称和类型 如:<discriminator column=”XXX” type=”string”/> 子类使用<subclass>标签定义,在定义subclass的时候,需要注意如下几点: Su ...
乐观锁
大多数基于数据版本记录机制(version)实现,一般是在数据库表中加入一个version字段读取数据时将版本号一同读出,之后更新数据时版本号加一,如果提交数据时版本号小于或等于数据表中的版本号,则认为数据是过期的,否则给予更新
悲观锁
悲观锁的实现,通常依赖于数据库机制,在整个过程中将数据锁定,其它任何用户都不能读取或修改
具体参考:http://www.51cto.com/specbook/229/36690.htm
hibernate lazy策略可以使用在: * <class>标签上,可以取值:true/false * <property>标签上,可以取值:true/false需要类增强工具 * <set><list>标签上,可以取值:true/false/extra * <one-to-one><many-to-one>单端关联上,可以取值:false/proxy/noproxy lazy概念:只有真正使用该对象时,才会创建,对于hibernate而言,正真使用的时候才会发出sql
hibernate支持lazy策略只有在sess ...
hibernate一级缓存 一级缓存很短和session的生命周期一致,一级缓存也叫session级的缓存或事务级缓存
那些方法支持一级缓存: * get() * load() * iterate(查询实体对象) 如何管理一级缓存: * session.clear(),session.evict() 如何避免一次性大量的实体数据入库导致内存溢出 * 先flush,再clear 如果数据量特别大,考虑采用jdbc实现,如果jdbc也不能满足要求可以考虑采用数据本身的特定导入工具
//在同一个session中发出两次load查询
Student student = (Student)sessi ...
了解Hibernate中CRUD操作
了解get和load的区别? * get不支持lazy,load支持lazy * 采用get加载数据,如果没有匹配的数据,返回null,而load则抛出异常 transient状态的特征? * 在数据库中没有与之匹配的数据 * 没有纳入session的管理 persistent状态的特征? * persistent状态的对象在数据库中有与之匹配的数据 * 纳入了session的管理 * 在清理缓存(脏数据检查)的时候,会和数据库同步 detached状态的特征? * 在数据库中有与之匹配的数据 * 没有纳入session的管理 ----------- ...