
Mybatis & Hibernate
文章平均质量分 71
走慢一点点
这个作者很懒,什么都没留下…
展开
-
@GeneratedValue详解
一、JPA通用策略生成器 通过annotation来映射hibernate实体的,基于annotation的hibernate主键标识为@Id, 其生成规则由@GeneratedValue设定的.这里的@id和@GeneratedValue都是JPA的标准用法, JPA提供四种标准用法,由@GeneratedValue的源代码可以明显看出. Java代码转载 2013-11-07 12:17:08 · 2470 阅读 · 0 评论 -
Mybatis——返回主键的几种方式
1、主键返回之自增主键2、主键返回值UUIDUUID函数是mysql的函数 3、主键返回值序列序列也就是sequence,它是Oracle的主键生成策略原创 2016-08-31 23:19:37 · 7854 阅读 · 0 评论 -
Hibernate优化(五) 之事务隔离机制(悲观锁、乐观锁)
事务的4大特性(ACID):原子性(Atomicity):事务是数据库的逻辑工作单位,它对数据库的修改要么全部执行,要么全部不执行。一致性(Consistemcy):事务前后,数据库的状态都满足所有的完整性约束。隔离性(Isolation):并发执行的N个事务是隔离的,一个不影响一个,一个事务在没有commit之前,被修改的数据不可能被其他事务看到(通过设置数据库的隔离级别)。持久性(Du转载 2013-11-10 17:46:18 · 1578 阅读 · 0 评论 -
Hibernate中get和load方法的区别
Hibernate中get和load方法的区别1. 不存在对应记录时表现不一样2. load返回的是代理对象,等到真正用到对象的内容时才发出sql语句3. get直接从数据库加载,不会延迟1. 对于get方法,hibernate会确认一下该id对应的数据是否存在,首先在session缓存中查找,然后在二级缓存中查找,还没有就查询数据库,数据库中没有转载 2013-11-07 17:45:44 · 845 阅读 · 0 评论 -
Hibernate优化(二) 之 1+n问题
1+N问题也可以叫N+1问题,什么是1+N问题呢?如果在一个对象里关联另一个对象,并且fetch = FetchType.EAGER。比如说ManyToOne(OneToMany也存在这种问题)关联,本来只需要取Many里的对象属性,可是Many里关联的对象都会单独再发一条语句取关联对象的属性。本来只用发一条就可以查出Many里的对象属性,可是它发了一条语句后,再发N条语句取关联对象的转载 2013-11-10 14:15:29 · 1105 阅读 · 0 评论 -
Hibernate优化(三) 之load/get、list/iterator
一、load和get方法的区别 1、load在查询时,先从一级缓存中寻找与数据索引对应的实体对象,然后构建并返回一个代理对象,当我们真正使用这个代理对象的时候,这时候才会进入二级缓存查找或到数据库加载数据,如果数据库中没有找到则抛出一个ObjectNotFoundException;2、get方法在查询时,同样是先从一级缓存中寻找与数据索引对应的实体对象,如果有则直接返回该实体对象转载 2013-11-10 14:44:41 · 1404 阅读 · 0 评论 -
hibernate优化(一) 之session优化
java有内存泄露吗?语法上没有,因为有java垃圾收集器负责回收。但是在实际开发中,比如操作连接池、文件、Hibernate的session等,打开后一定要关闭,否则会有内存泄露。hibernate优化 之session优化1。 内存泄露的两种情况分析以及避免 2。 Sql语句优化注意的地方 3。 Hibernate Session的合理利用 今天给大转载 2013-11-08 22:32:55 · 1282 阅读 · 0 评论 -
Hibernate优化(四) 之缓存机制详解
Hibernate 所有缓存机制详解缓存的概念:java对象的属性(通常是一些集合类型的属性 )占用的内存空间。如果对象的占用的内存很大就称为重量级的对象。如果对象的内存小就称为轻量级的对象。Session 的缓存被称为hibernate的第一级缓存。SessionFactory的外置缓存称为hibernate 的二级缓存。这两个缓存都位于持久层,它们存放的都是数据库数据的拷贝。S转载 2013-11-10 16:07:28 · 1178 阅读 · 0 评论 -
Hibernate 树状映射简单模拟
树状结构的设计在同—个类中使用OneToMany和ManyTo0ne参考下面代码: fetch=FetchType.EAGER可省略即为@OneToMany的默认值fetch=FetchType.LAZY 若树形较小可使用EAGER 一次全部载入内存若为LAZY则查询树形时不会一次全部载入内存(适用于较大的树形),会每取一个叶子节点就select一次原创 2013-11-08 20:57:19 · 869 阅读 · 0 评论 -
Hibernate继承映射
Hibernate继承映射 在面向对象的程序领域中,类与类之间是有继承关系的,例如Java世界中只需要extends关键字就可以确定这两个类的父子关系,但是在关系数据库的世界中,表与表之间没有任何关键字可以明确指明这两张表的父子关系,表与表是没有继承关系这样的说法的。为了将程序领域中的继承关系反映到数据中,Hibernate为我们提供了3中方案:第一种方案:一个子类对应一张表。转载 2013-11-08 19:21:24 · 748 阅读 · 0 评论 -
Hibernate 体系结构与工作原理 【附图】
1.Hibernate 的初始化.读取Hibernate 的配置信息-〉创建Session Factory1)创建Configeration类的实例:它的构造方法:将配置信息(Hibernate config.xml)读入到内存。 一个Configeration 实例代表Hibernate 所有Java类到Sql数据库映射的集合。2)创建SessionFacto转载 2013-11-06 12:03:48 · 2585 阅读 · 0 评论 -
Hibernate关联关系中的CRUD
1、cascade //控制增删改(即CUD)设定cascade以设定在持久化时对于关联对象的操作(CUD,R归Fetch管) cascade仅仅是帮我们省了编程的麻烦而已,不要把它的作用看的太大 Cascade的属性是数组格式,指明做什么操作的时候关联对象是绑在一起的11. cascade={CascadeType.ALL}CascadeType取值原创 2013-11-08 15:18:56 · 1018 阅读 · 0 评论 -
Hibernate 映射关系注解属性详解
注解映射必须满足两大条件:Hibernate3.2以上版本和JSEE 5。 1.标准注解@Entity 类注释,所有要持久化的类都要有@Entity public class Org implements java.io.Serializable { } @Id 主键 @Id @GeneratedValue转载 2013-11-06 17:31:49 · 2258 阅读 · 0 评论 -
Hibernate之update及更新部分字段
Hibernate 更新部分更改的字段Hibernate 中如果直接使用 Session.update(Object o); 或则是Session.updateOrUpdate(Object o); 会把这个表中的所有字段更新一遍。 如:[java] view plaincopyprint?Ex转载 2013-11-07 17:56:20 · 5780 阅读 · 0 评论 -
hibernate核心接口介绍
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Hi原创 2013-11-07 14:50:38 · 1447 阅读 · 0 评论 -
Hibernate联合主键详解
Hibernate联合主键映射 1. 实现方式一:将复合主键对应的属性与实体其他普通属性放在一起 2. 实现方式二:将主键属性提取到一个主键类中,实体类只需包含主键类的一个引用 联合主键的映射规则1) 类中的每个主键属性都对应到数据表中的每个主键列。Hibernate要求具有联合主键的实体类实现Serializable接口原创 2013-11-07 13:10:12 · 2019 阅读 · 0 评论 -
mybatis 开发 “三剑客”
Mybatis-generator代码自动生成mybatis-generator是很好用的mybatis自动代码生成工具。手动写一个个实体类和mapper还有xml配置文件会很麻烦,使用mybatis-generator只需要简单的配置就能完成,这里简述一下开发步骤。maven依赖配置<dependency> <groupId>org.mybat...原创 2018-03-09 15:54:38 · 5048 阅读 · 0 评论