hibernate3
文章平均质量分 77
aiqing0119
这个作者很懒,什么都没留下…
展开
-
一 认识hibernate3
写道下载的hibernate解压目录 hibernate3.jar是hibernate的核心包 doc 文档 eg 例子程序 etc 配置文件 grammar 语法 lib 依赖的包 src hibernate源代码 test 测试用例 ORM Object Relation Mapping对象关系映射 主流的ORM框架有Hibernate、TopLink、OJB。 配置文件 hibernat...原创 2011-04-27 22:34:52 · 100 阅读 · 0 评论 -
十四 在hibernate中使用集合总结
集合映射(set, list, array,bag, map)这些集合类都是Hibernate实现的类和JAVA中的集合类不完全一样,set,list,map分别和JAVA中的Set,List,Map接口对应,bag映射成JAVA的List;这些集合的使用和JAVA集合中对应的接口基本一致;在JAVA的实体类中集合只能定义成接口不能定义成具体类, 因为集合会在运行时被替换成Hibern...原创 2011-07-04 17:52:35 · 118 阅读 · 0 评论 -
十五 cascade 级联操作与inverse表是否放弃维护关联关系
cascade 级联操作字段 Casade用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似的操作,常用的cascade:none,all,save-update ,delete, lock,refresh,evict,replicate,persist,merge,delete-orphan(one-to-many) 。一般对many-to-one,many-to-many...原创 2011-07-04 17:54:26 · 112 阅读 · 0 评论 -
十六 继承映射
第一种一个员工类它有两个子类,利用hibernate我们把这员工类及子类都映射到一张表里,员工表是普通员工,子类的话是技术员工的类和销售员工 那么这三个类怎么映射到一张表里,我们又如何区分这员工的到底是哪一类员工呢 这时,我们一般在表中加入了一个识别的字段,比如说type 这个字段有三个值,默认值为0 表示的普通员工,1是技术员工 2是销售员工 好,现在开始设计主体员工实体...原创 2011-07-04 17:56:50 · 91 阅读 · 0 评论 -
十七 懒加载
十七 懒加载什么是hibernate懒加载?什么时候用懒加载?为什么要用懒加载?所谓懒加载(lazy)就是延时加载,延迟加载。什么时候用懒加载呢,我只能回答要用懒加载的时候就用懒加载。至于为什么要用懒加载呢,就是当我们要访问的数据量过大时,明显用缓存不太合适,因为内存容量有限 ,为了减少并发量,减少系统资源的消耗,我们让数据在需要的时候才进行加载,这时我们就...原创 2011-07-04 17:58:28 · 121 阅读 · 0 评论 -
十八 一对一对象的懒加载
一对一对象的懒加载,对于主的一方,lazy是无效的,它在访问数据的时候,还是会利用左连接,把主从表的数据全部查询一遍 但是对于从对象,默认的是懒加载 lazy=true 如果你需要从对象的数据,如果你通过子实体和id直接去查询从实体 get()方法 它只查询从对象的数据,并不会去查询主对象的数据一对多 懒加载 重点缺省的是懒加载的 比说说部门与员工 ,一个部门可能有几千员工...原创 2011-07-04 17:59:54 · 178 阅读 · 0 评论 -
十九 hibernate3之缓存
什么是缓存?现在我们来看一个模拟的缓存操作模拟一个缓存例子package cn.itcast.hibernate;import java.util.HashMap;import java.util.Map;import cn.itcast.hibernate.domain.User;public class CacheDemo { static Ma...原创 2011-07-04 19:09:03 · 103 阅读 · 0 评论 -
二十 悲观锁和乐观锁
为了避免对对象同步操作时候产生的数据不一致问题,我们对对象采用加锁机制悲观锁:从读取的时候开始加锁,直到修改完成。缺点:读取完以后,用户修改过程缓慢,造成同步性降低。乐观锁:给每条记录添加版本号,用来区别。两人同时编辑时候,假设获取的版本号都为1,编辑完提交的时候,版本号为2,第一个提交完以后,数据库版本号为2,第二个提交的时候对比版本号就会报错。解决的方法:在实体...原创 2011-07-04 19:10:11 · 72 阅读 · 0 评论 -
二十一 串讲Hibernate配置文件中的配置项
数据源配置 ## JNDI Datasource#hibernate.connection.datasource jdbc/test#hibernate.connection.username db2#hibernate.connection.password db2Hibernate连接池连接数hibernate.connection.pool_size ...原创 2011-07-04 19:11:17 · 100 阅读 · 0 评论 -
二十二 Hibernate映射文件配置
id 主键生成方式increment Hibernate内部自己做累加,而不是数据库中做累加。indentity 数据库标示符自增长squence Oracle常用hilo 高低位 数据库保存高位字段,Hibernate累加地位字段,新插入数据由这两个字段组成,不会重复。uuid 生成主键不用访问数据库,Hibernate生成,插入效率很高,主键string类型...原创 2011-07-04 19:12:27 · 80 阅读 · 0 评论 -
二十三 iterate查询与N+1次查询的问题
test.javaview plaincopy to clipboardprint?01.import hibernate.HibernateUtil; 02. 03.import java.util.Date; 04.import java.util.Iterator; 05. 06.import org.hibernate.Query; ...原创 2011-07-04 19:13:37 · 344 阅读 · 0 评论 -
二十四 拦截器与监听器
在保存 更新等操作的前后可以追加一些操作,我们把这类操作放在时间的监听器里,Hibernate3.0以前使用拦截器来实现的,现在多数使用监听器来实现。比如我们对保存Users进行监听SaveListener.javaview plaincopy to clipboardprint?01.package listener; 02. 03.import o...原创 2011-07-04 19:14:42 · 80 阅读 · 0 评论 -
二十五 SQL和命名查询
SQL和命名查询SQL查询//根据sql语句查询static List sql(){ Session s=HibernateUtil.getSession(); Query q=s.createSQLQuery("select * from department").addEntity(Department.class); List<Department>...原创 2011-07-04 19:17:22 · 240 阅读 · 0 评论 -
十三 array数组形式的映射
数组其实跟List的集合映射没有多大的差别,当然它不可以使用bag这个节点配置先看实体部门package vo.util.bean;import java.util.Set;/** * 部门类 * @author Administrator * */public class Department { private int id; priva...原创 2011-07-04 17:51:42 · 126 阅读 · 0 评论 -
十二 集合映射之Map集合
十二 Map集合映射Map是以键值对的形式存放数据的 现在我们假设员工数据的name为唯一的 现在我们来看映射文件<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernat...原创 2011-07-04 17:49:48 · 96 阅读 · 0 评论 -
二 细节分析 入门
写道开发hibernate 牵扯到实体类的编写 映射文件的编写 表的编写开发流程 三种方式 1由Domain object -> mapping->db。(官方推荐) 2由DB开始,用工具生成mapping和Domain object。(使用较多) 3由映射文件开始。Domain Object限制 1.默认的构造方法(必须的)。 2有无意义的标示符id(主键)(可选) 3非...原创 2011-04-28 00:02:47 · 112 阅读 · 0 评论 -
补充知识 Session接口及get、load、persist方法
在Base类中加入以下代码实现get方法package cn.itcast.hibernate;import java.util.Date;import org.hibernate.HibernateException;import org.hibernate.Session;import cn.itcast.hibernate.domain.User;import...原创 2011-04-28 00:50:54 · 115 阅读 · 0 评论 -
Hibernate操作入门
Hibernate复习 Hibernate的核心接口有五个:Session,SessionFacttory,Configuration,Transaction和QuerySession接口负责持久化对象的操作 好比是一个JDBC的连接对象SessionFactory接口负责初始化hibernate.cfg.xml,它充当数据储存源的代理,好比是一个数据源Configuration接...原创 2011-04-28 01:10:18 · 77 阅读 · 0 评论 -
三 hibernate3的对象状态
对象状态瞬时(transient):数据库中没有数据与之对应,超过作用域会被JVM垃圾回收器回收,一般是new出来且与session没有关联的对象。持久(persistent):数据库中有数据与之对应,当前与session有关联,并且相关联的session没有关闭,事务没有提交; 持久对象状态发生改变,在事务提交时会影响到数据库(hibernate能检...原创 2011-04-29 19:01:31 · 70 阅读 · 0 评论 -
四 HQL与Criteria查询
HQL(Hibernate Query Language) 面向对象的查询语言,与SQL不同,HQL中的对象名是区分大小写的(除了JAVA类和属性其他部分不区分大小写);HQL中查的是对象而不是和表,并且支持多态;HQL主要通过Query来操作,Query的创建方式: Query q = session.createQuery(hql);from Personfrom User u...原创 2011-04-29 19:03:36 · 176 阅读 · 0 评论 -
五 hibernate3的增删查改操作实现
基本功能练习实验步骤:1.设计domain对象User。2.设计UserDao接口。3.加入hibernate.jar和其依赖的包。4.编写User.hbm.xml映射文件,可以基于hibernate/eg目录下的org/hibernate/auction/User.hbm.xml修改。5.编写hibernate.cfg.xml配置文件,可以基于hibernate/etc/...原创 2011-07-04 17:34:00 · 150 阅读 · 0 评论 -
六 员工与部门——》多对以关系
关联关系 多对一关系 员工与部门的关系 从员工角度 是多对一的关系 那么在员工的实体类中加上部门的属性即可 package vo.util.bean;/** * 员工类 * @author Administrator * */public class Employee { private int id; private String nam...原创 2011-07-04 17:37:39 · 744 阅读 · 0 评论 -
七 一对多关系 部门与员工的关系
一对多 部门与员工的关系 相对于部门来说 一对多 根据先前的程序部门部分修改 员工的实体不做修改 部门 package vo.util.bean;import java.util.Set;/** * 部门类 * @author Administrator * */public class Department { private int i...原创 2011-07-04 17:41:45 · 834 阅读 · 0 评论 -
八 一对一 用户与身份证的关系
八 一对一 用户与身份证的关系 设计用户实体 主实体package hibernate.bean;public class Person { private int id; private String name; private IDCard idcart;public int getId() { return id;}public v...原创 2011-07-04 17:42:49 · 175 阅读 · 0 评论 -
九 多对多关系 学生<--->老师的关系
九 多对多关系 学生<--->老师的关系多对多关系 学生<--->老师的关系 一个学生可以有多个老师 一个老师可以有多个学生在多对多的关系的表 在操作和性能方面都不太理想,所以多对多的映射使用较少,实际使用中最好转换成一对多的对象模型;Hibernate会为我们创建中间关联表,转换成两个一对多。具体操作是这样的 比如说我们建一个老师表 teacher 和...原创 2011-07-04 17:44:01 · 1311 阅读 · 0 评论 -
十 组件关联
组件关联 什么是组件关联呢?比如说一个用户,它的名称,有一个中文名,一个英文名 它有两个名称,相对于名称与用户来说这是什么关系呢,一个用户多个名称 当然 是一对多的关系了,我们设计名称这个属性的时候,这时我们可以把名称设计为一个实体类 Name 那么这个实体类就相对于用户名称来说,这个实体类就是组件了,那么用户名称与用户的关系,我们就称作组件关联关系平常我们设计关联的时候,...原创 2011-07-04 17:45:28 · 230 阅读 · 0 评论 -
十一 集合映射 List集合
十一 集合映射 set的集合配置方式在一对多 多对一 多对多中已经讲过 将不再阐述 现在来看List这种集合的映射方式 List形式的映射 部门实体 package vo.util.bean;import java.util.List;/** * 部门类 * @author Administrator * */public...原创 2011-07-04 17:47:11 · 190 阅读 · 0 评论 -
二十六 Hibernate实践
不适合OLAP以查询分析数据为主的系统。适合OLTP联机事务处理系统不适合关系模型设计不合理的老系统不适合数据量巨大,性能要求苛刻的系统。最好使用小对象来封装一个类,大的对象应该有很多小的对象。使用无意义的自然建作为主键每个类对应一个映射文件把查询串放在程序外面使用命名变量做查询不要自己管理JDBC connections性能...原创 2011-07-04 19:18:52 · 77 阅读 · 0 评论