
hibernate学习笔记(学习自尚学堂马士兵视频)
文章平均质量分 74
团子大人156
爱生活,爱编程
展开
-
04hibernate 模拟ORM原理
一、什么是ORM 为什么要用ORM1.jdbc操作数据库很繁琐2.sql语句编写并不是面向对象的3.可以在对象和关系表之间建立关联来简化编程4.ORM简化编程5.ORM跨数据平台二、模拟原理Session类public class Session{ String tableName = "_Student"; Map cfs = new HashMap; String原创 2014-06-24 23:33:02 · 410 阅读 · 0 评论 -
15hibernate hibernate树状结构的设计(较重要)
@Entitypublic class Org{ private int id; private String name; @OneToMany(cascade=CascadeType.All,mappedBy="parent") private Set children = new HashSet(); @ManyToOne @JoinColumn(name="parent_id原创 2014-07-07 16:48:59 · 373 阅读 · 0 评论 -
16hibernate hibernate学生、课程、分数设计案例
1.使用联合主键@Embedded a.实现Serializable接口student:idnamecourse://student和course是ManyToManyidnamescore:(同时是student和course连接表)//studentid和courseid不能使用自动生成studentid//先存student,然后把id拿出来放到score表里co原创 2014-07-08 10:02:09 · 663 阅读 · 0 评论 -
14hibernate hibernate的集合映射和继承映射(了解)
1.Set(参考前面的实例)2.List//支持排序 a.OrderBy public class Group { private int id; private String name; @OneToMany(mappedBy="group", cascade={CascadeType.All}) @OrderBy("name ASC")//默认按照主键排序原创 2014-07-07 15:54:23 · 364 阅读 · 0 评论 -
01hibernate初印象
一、hibernate概述原创 2014-06-17 21:53:47 · 382 阅读 · 0 评论 -
17hibernate hibernate的Query Language(查询语言)
按功能从大到小排列:1.NativeSQL//专门用于具体某个数据库的,不能跨数据库平台 //如财务报表的子查询、关联查询,只能用nativeSQL //想提高查询效率,用存储过程PLSQL,只能用nativeSQL2.HQL//hibernate自带的查询语言,和SQL类似 //内部会转化为具体的方言3.EJBQL(JPQL1.0)//可以认为是HQL的一个子集 //跨O原创 2014-07-08 14:49:28 · 467 阅读 · 0 评论 -
19hibernate hibernate的性能优化之一级缓存、二级缓存和查询缓存
4.一级缓存、二级缓存和查询缓存//面试题 a.什么是缓存 在内存中开辟一块空间,将原本储存在硬盘上的数据存储到内存中, 提高数据访问的效率,这块内存空间就是缓存 b.什么是一级缓存,session级别的缓存 public void testCache1(){ Session session = sf.openSession(); session.beginTrans原创 2014-07-09 13:42:37 · 461 阅读 · 0 评论 -
18hibernate hibernate的性能优化之session.clear()、1+N问题、list和iterate的区别
1.session.clear() 注意session.clear()的运用,尤其在不断分页循环的时候 a.比如:在一个大集合中进行遍历,遍历msg,取出其中的含有敏感字样的对象 如果每次翻页都产生一个session,那之前的session就被清除了 (实际上由java虚拟机的GC帮忙清除),不会产生问题; 但如果一直在同一个session里不断读取,之前的数据因为存在引用,原创 2014-07-09 13:39:42 · 686 阅读 · 0 评论 -
20hibernate hibernate的性能优化之事务并发和事务隔离机制
5.事务并发处理//面试的意义更大 a.事务: 是并发控制的单位,是用户定义的一个操作序列。 这些操作要么都做,要么都不做,是一个不可分割的工作单位。 通过事务,SQL Server能将逻辑相关的一组操作绑定在一起, 以便服务器保持数据的完整性。 事务四个特性:ACID (1)Atomicity 原子性 //事务是数据库的逻辑工作单位,事务中包括的诸操作要么原创 2014-07-09 16:43:04 · 368 阅读 · 0 评论 -
Hibernate 所有缓存机制详解
hibernate提供的一级缓存hibernate是一个线程对应一个session,一个线程可以看成一个用户。也就是说session级缓存(一级缓存)只能给一个线程用,别的线程用不了,一级缓存就是和线程绑定了。hibernate一级缓存生命周期很短,和session生命周期一样,一级缓存也称session级的缓存或事务级缓存。如果tb事务提交或回滚了,我们称session就关闭了,生转载 2014-07-09 17:01:13 · 514 阅读 · 0 评论 -
13hibernate hibernate关联关系的CRUD(增删改查)
补充: 在hibernate.cfg.xml中引入类 在hibernate.cfg.xml中引入xml文件 annotation和xml只需一种方式,所以根据使用引入其中一种即可1.设定cascade可以设定在持久化时对于关联对象的操作2.cascade仅仅是帮我们省了编程的麻烦而已,不要把它的作用看的太大 a.cascade的属性指明做什么操作的时候关联对象是绑定在一起的原创 2014-07-07 13:39:29 · 607 阅读 · 0 评论 -
12hibernate hibernate的关系映射之ManyToMany(重点)
1.多对多单向关联(老师知道教了哪些学生,学生并不知道被哪些老师教) a.数据库:中间表 b.annotation: @Entity public class Teacher { private int id; private String name; @ManyToMany @JoinTable(name="t_s",//可修改默认中间表的名称 J原创 2014-07-04 14:13:36 · 332 阅读 · 0 评论 -
11hibernate hibernate的关系映射之OneToMany和ManyToOne(重点)
1.多对一单向关联 a.数据库表设计,在多方加外键(原则:不要产生数据冗余) 补充知识——数据库表设计三范式: (1)要有主键,列不可分 (2)联合主键不能存在部分依赖 (3)不能存在传递依赖 b.annotation: @Entity @Table(name="t_group") public class Group { @Id @Generate原创 2014-07-04 11:10:36 · 475 阅读 · 0 评论 -
02hibernate第一个程序
1.建立hibernate配置文件hibernate.cfg.xml2.创建Student类3.在数据库中建立student表4.建立Student映射文件Student.hbm.xml5.将映射文件加入到hibernate.cfg.xml中6.写测试类 Student s = new Student(); s.setId(1); s.setName("s1"); s.setAg原创 2014-06-23 22:09:29 · 338 阅读 · 0 评论 -
03hibernate Annotation版本的hibernate
1.创建teacher表2.创建teacher类3.引进Jar包 hibernate-annotation.jar ejb3-persistence.jar//符合了jpa标准的annotation的实现 hibernate-common-annotation.jar//进行反射时需要使用的包 才可使用annotation4.Teacher类前加上@Entity //javax.原创 2014-06-23 22:37:22 · 437 阅读 · 0 评论 -
05hibernate hibernate的基础配置
1.hbm2ddl.auto create-->运行时如果数据库没有这张表,会自动创建表,如果已经有了,则会先drop再create update-->配置文件对表结构修改了,会自动修改数据库表结构 create-drop-->当关闭SessionFactory时,将drop屌数据库 validate-->当操作表数据时,会自动检验操作对象与配置文件是否对应 hibernate.cf原创 2014-06-30 09:22:17 · 428 阅读 · 0 评论 -
06hibernate hibernate的annotation
1.表名和类名不同,对表名进行配置a.annotation方法:@Table(name="tableName")b.xml:2.字段名和属性相同a.没有注解的默认为@Basicb.xml中不用写column3.字段名和属性不同a.annotation:@Column(name="columnName")b.xml:4.不需要persist原创 2014-06-30 15:49:50 · 374 阅读 · 0 评论 -
07hibernate hibernate的ID生成策略
一、生成策略有:1.increment 用于为long,short或者int类型生成唯一标识。 只有在没有其他进程往同一张表中插入数据时才能使用。2.identity(常用) 对DB2,MySQL,MS SQL Server,Sybase和HypersonicSQL的内置标识字段提供支持 返回的标识符是long,short或者int类型。 即mysql中的auto_increme原创 2014-07-01 16:17:27 · 463 阅读 · 0 评论 -
08hibernate hibernate的核心开发接口介绍及三种对象状态(重点)
1.Configuration a.包括AnnotationConfiguration b.进行配置信息的管理 c.用来产生SessionFactory d.可以在configure方法中指定hibernate配置文件 sessionFactory = new AnnotationConfiguration().configure("hibernate.xml").buildSessi原创 2014-07-03 10:37:56 · 575 阅读 · 0 评论 -
10hibernate hibernate的关系映射之联合主键和组件映射
1.联合主键 @Entity @IdClass(WifePK.class) public class Wife { @Id private int id; @Id private String name; private int age; } public class WifePK implements Serializable { private int i原创 2014-07-03 16:48:44 · 390 阅读 · 0 评论 -
09hibernate hibernate的关系映射之OneToOne(重点)
关系映射指的是对象之间的关系,并不是指数据库的关系一对一 (1)单向外键关联: a.annotation版本: public class Husband { private int id; private String name; @OneToOne @JoinColumn(name="wifeId")//指定外键名 private Wife wife原创 2014-07-03 16:44:08 · 474 阅读 · 0 评论 -
<many-to-one>设置
"code" class="xml"> name="属性名" column="外键字段名" //可选,默认与name同值。也可以用嵌套的 元素。 class="关联的完整类名"//可选,默认是通过反射得到属性类型。 entity-name="被关联类的实体名" > //待研究 lazy="true|false(默认)"转载 2014-07-03 17:29:02 · 603 阅读 · 0 评论 -
关系/对象映射 多对多关系(@ManyToMany 注释)【重新认识】
转自:http://blog.youkuaiyun.com/gabriel80/article/details/4260923转自:http://blog.youkuaiyun.com/gabriel80/article/details/4260923转载 2014-11-20 13:56:58 · 462 阅读 · 0 评论