本月博客排行
-
第1名
龙儿筝 -
第2名
lerf -
第3名
fantaxy025025 - johnsmith9th
- xiangjie88
- zysnba
年度博客排行
-
第1名
青否云后端云 -
第2名
宏天软件 -
第3名
gashero - wy_19921005
- vipbooks
- benladeng5225
- e_e
- wallimn
- javashop
- ranbuijj
- fantaxy025025
- jickcai
- gengyun12
- zw7534313
- qepwqnp
- 解宜然
- ssydxa219
- zysnba
- sam123456gz
- sichunli_030
- arpenker
- tanling8334
- gaojingsong
- kaizi1992
- xpenxpen
- 龙儿筝
- jh108020
- wiseboyloves
- ganxueyun
- xyuma
- xiangjie88
- wangchen.ily
- Jameslyy
- luxurioust
- lemonhandsome
- mengjichen
- jbosscn
- zxq_2017
- lzyfn123
- nychen2000
- forestqqqq
- wjianwei666
- ajinn
- zhanjia
- siemens800
- Xeden
- hanbaohong
- java-007
- 喧嚣求静
- mwhgJava
最新文章列表
hibernate学习笔记第20讲-二级缓存
sessionFactory可以管理二级缓存。
Hibernate默认开启二级缓存。
二级缓存也称进程级的缓存或SessionFactory级的缓存,二级缓存可以被所有的session共享
二级缓存的生命周期和SessionFactory的生命周期一致,SessionFactory可以管理二级缓存
二级缓存的配置和使用:
*
将echcache.xml文件拷贝 ...
hibernate学习笔记第19讲-一级缓存
hibernate一级缓存
一级缓存很短和session的生命周期一致,一级缓存也叫session级的缓存或事务级缓存
那些方法支持一级缓存:
* get()
* load()
* iterate(查询实体对象)
如何管理一级缓存:
*
session.clear(),session.evict()
...
hibernate学习笔记第18讲-悲观锁-乐观锁
Hibernate对悲观锁和乐观锁的支持,主要解决并发问题。
数据库隔离级别越高,并发性越差。
锁具有排他性,锁住别人就访问不了。
悲观锁:并发性低,悲观锁一般依赖于数据库机制实现的,在整个过程中将数据锁定,其他任何用户都不能读取或修改,hibernate做了一些封装。
一般适合短事务情况。
实际上是冲突检测。
悲观锁实现:
...
hibernate学习笔记第17讲-其他Set-List-Array-Map等映射
1,set映射:set是无序的
2,List映射,list是有序的,表中需要保存一个索引序列存储顺序下标。
3,数组映射,跟list一样。
4,Map映射,key-value
映射关系:
<hibernate-mapping>
hibernate学习笔记第16讲-复合主键映射
复合(联合)主键映射:
复合主键映射一般采用把主键相关的字段拿出来,单独形成一个类,该类必须实现序列化接口,(在同一个JVM中没关系,如果跨JVM再想访问,必须序列化)。
复合主键一般与业务结合的很紧密,不建议使用。
通常将复合主键相关的属性,单独放到一个类中
* 此类必须实现序列化接口
*
覆写hashcode和equals方法
映射关系:
<hi ...
hibernate学习笔记第15讲-component映射
Component组件映射:对象模型细粒度划分,复用率提高
component是某个实体的逻辑组成部分,它与实体的根本区别是没有oid,component也称为值对象(DDD、领域驱动设计模型)。
采用component映射的好处:它实现了对象模型的细粒度划分,层次更分明,复用率更高。
映射关系:
<hibernate-mapping>
<class
name ...
hibernate学习笔记第14讲-继承映射
继承映射:
1,一个类继承树映射到一张表。一般采用第一种。效率高,资源占用率低。
1、理解如何映射
因为类继承树肯定是对应多个类,要把多个类的信息存放在一张表中,必须有某种机制来区分哪些记录是属于哪个类的。
这种机制就是,在表中添加一个字段,用这个字段的值来进行区分。用hibernate实现这种策略的时候,有如下步骤:
父类用普通的<class> ...
hibernate学习笔记第13讲-jdk动态代理和CGLib
Jdk动态代理,CGLib字节码生成
如果目标对象实现了接口,可以使用jdk动态代理和CGLib。
如果没有实现接口,只能使用CGLib。
Jdk动态代理要实现一个接口:InvocationHandler
public
class SecurityHandler implements InvocationHandler {
//目标对象,对该目标对象生成代理
...
hibernate学习笔记第12讲-lazy策略
Hibernate
lazy策略:延迟加载、懒加载。
代理的概念:只有真正使用该对象的时候才会创建。
Lazy在hibernate上:在真正使用的时候才会发出sql查询。
实现原理:采用第三方库cglib,对类生成代理类。代理可以控制源对象,并且可以对源对象的功能进行增强。
Cglib和jdk动态代理的区别:
1,cglib能够对类进行代理,jdk动态代理只能对实现了接口的类进行 ...
hibernate学习笔记第11讲-多对多关联映射many-to-many
单向映射
hibernate多对多关联映射(单向User---->Role)
具体映射方式:
<set
name="roles" table="t_user_role">
<key
column="userid"/>
...
hibernate学习笔记第10讲-一对多关联映射one-to-many双向
hihernate一对多关联映射(双向Classes<----->Student)
一对多双向关联映射:
* 在一一端的集合上使用<key>,在对方表中加入一个外键指向一一端
* 在多一端采用<many-to-one>
注意:<key>标签指定的外键字段必须和<many ...
hibernate学习笔记第9讲-一对多关联映射one-to-many单向
一对多关联映射利用了多对一关联映射的原理。
多对一关联映射:在多的一端加入一个外键指向一的一端,但是维护的关系是多指向一的一端。
一对多关联映射:在多的一端加入一个外键指向一的一端,但是维护的关系是一指向多的一端。
两者映射策略是一样的,只是站的角度不同。
Hibernate一对多映射(class--àstudent单向):
一般用set集合,set里面的内容不可 ...
hibernate学习笔记第8讲-session_flush-数据库隔离级别
Session flush:
默认在commit之前执行flush。
Session flush方法主要做了两件事
1清理缓存
2 执行sql
Session flush 在什么时候执行:
1 默认在事务提交commit时
2, 显示调用。
3 在执行查询前,如 iterate ...
hibernate学习笔记第7讲-一对一唯一外键关联映射one-to-one
Hibernate一对一唯一外键关联:
就是多对一的特列,把外键设置成unique为true。
采用<many-to-one name="idCard"
unique="true"/>
单向:
Person.hbm.xml
<hibernate-mapping>
<class
name=&q ...
hibernate学习笔记第6讲-一对一主键关联映射one-to-one
Hibernate一对一主键关联:
1,单向主键关联:person--------》idCard
Person的主键id作为一个外键参照idCard的主键id。键值都是一样的。
让两个实体的主键id保持相同,这样避免多余字段被创建。
Person.hbm.xml:
<hibernate-mapping>
<class
name= ...
hibernate学习笔记第5讲-多对一关联映射many-to-one
Hibernate
多对一映射:
关联映射本质:
*将关联关系映射到数据库。所谓关联关系就是对象模型在内存中的一个或者多个引用。
Many-to-one:
*在多的一段加上一个外键指向一的一端。
理解级联的含义:
*是对象的连锁反应。
User映射关系配置:
<hibernate-mapping>
...
hibernate学习笔记第4讲-基本映射标签和属性
Hibernate基本映射:
实体类—映射—表。
实体类普通属性—映射—表字段。
采用<class>标签映射数据库表。
采用<property>标签映射表字段。
普通属性指的是:不包括自定义类,数组,集合等。
如果实体类和实体类中的属性和sql中的关键字重复,必须采用table或者column重新命名。
实体类的设计原则:
1,
实现一个默认的(无参 ...
hibernate学习笔记第3讲—持久化对象的生命周期—load和get的区别
1.瞬时状态(Transient)
由new命令开辟内存空间的Java对象,也就是平时所熟悉的普通Java对象。
如:Student stu = new Student();
瞬时对象特点:
(1)不和Se ...
hibernate学习笔记第2讲—hibernate核心接口
JNDI:java名称和目录接口。主要是管理对象的,特别是ejb应用,会把所有的ejb应用都放到JNDI这颗树上。就像电话簿一样,一个人的姓名对应一个电话。一个友好字符串对应一个实例。Tomcat连接池也是采用这种方式来做的。会把连接池对象注册到这棵树上,以后拿这个串就可以了。
采用JNDI的好处:1,对象可以统一管理。2,不依赖于具体的实现,采用lookup查找,解决耦合。
JDBC ...
hibernate学习笔记第1讲—使用hibernate步骤
第一个hibernate项目,
Hibernate中文“冬眠”,我们将对象保存到数据库的这个行为比喻成对象的冬眠。
Hibernate优点:提高生产力(不用开发枯燥的jdbc),开发更对象化,移植性(自动生成针对不同厂家的sql---方言),支持透明持久化(轻量级),没有侵入性。
Hibernate 弱点,不适用的情况:1,批量操作;2,需要使用数据库的特定优化机制,因为sql是由hib ...