Hibernate
文章平均质量分 87
c_feers
这个作者很懒,什么都没留下…
展开
-
hibernate入门(一):第一个应用实例
一 第一个应用实例 1.搭建环境:新建一个名为HibernateDemo的java工程,并导入Hibernate的jar包,特别要注意除了导入lib下的jar包还需导入hibernate3.jar核心jar包。 由于涉及数据库操作,还应导入mysql驱动包。 2.简述Hibernate的作用:ORM:Object Relational Mapping,对象关系映射。将java程序中的对...原创 2010-08-26 10:15:17 · 89 阅读 · 0 评论 -
hiberante入门(十二):继承关系2
上接hiberante入门(十二):继承关系1 (3)联合使用表: 意思是同时使用(1)(2)的形式,主要目的是为了能使用鉴别类型,但同时也能“设定为非空”。同样只需要修改配置文件,修改后的内容如下: Java代码 <class name="Employee" discriminator-value="0"> <id name="...原创 2010-08-26 11:03:14 · 103 阅读 · 0 评论 -
hiberante入门(十三):懒加载
4.懒加载: 在前面我们已经对懒加载有所提及,现在再借助一个简单的实例(它们均位于lazyLoad项目下)再来重新认识懒加载:先看下面的代码: Java代码 package com.asm.hibernate.test; public class UserTest2 { public static void main(String[] args...原创 2010-08-26 11:07:25 · 90 阅读 · 0 评论 -
hiberante入门(十四):缓存1
1.模拟缓存并简要说明缓存实现原理 在myhibernate项目下新建一个包com.asm.hibernate.test.cacheTest来说明与缓存有关的问题。首先看下面的一个模拟缓存程序,主要代码如下: Java代码 package com.asm.hibernate.test.cacheTest; public class CacheSimulate { ...原创 2010-08-26 11:10:58 · 106 阅读 · 0 评论 -
hiberante入门(十四):缓存2
>>步骤四、测试二级缓存:现在仍用前面的类来测试,尽管第一个session关闭了,但是我们在第二个session查询时,仍不会连库,这也就是二级缓存的作用,通常情况下,hibernate查询时会首先在一级缓存中查询数据,再到二级缓存中查询,如果仍查不到才会连库。 这时请注意,尽管我们在一级缓存中清掉了数据,但是在二级缓存中还存有数据,所以在清掉数据后执行的查询操作也不会引起连库,这就是为什么我们最...原创 2010-08-26 11:24:29 · 82 阅读 · 0 评论 -
hiberante入门(十五):事务相关-悲观乐观锁
1.事务引发的三层架构MVC讨论:在前面的程序代码中多次用到了事务:Transaction tx = s.beginTransaction(); 对应的jdbc代码:connection. setAutoCommit(false); ..... .....数据处理.....tx.commit(); 对应的jdbc代码:connection.commi...原创 2010-08-26 11:25:37 · 84 阅读 · 0 评论 -
hiberante入门(十六):一些细节理论
十二、一些细节问题分析 1.实体配置文件中的类型问题: 在前面的多个实例中配置映射类型时,我们都采取的是hibernate默认的配置,即是说没有在中配置type属性:其实基本类型一般不需要映射文件中配置,只有在一个java类型与多个数据库类型相对应时,交且我们不希望使用默认的配置才会用type来指明类型。举例:java.util.Date与数据库中的DATE,TIME,DATETIME...原创 2010-08-26 11:26:54 · 83 阅读 · 0 评论 -
hiberante入门(十七):简要总结及源码文档
十三、总结: 1.主配置与实体(映射)配置: 关于这些配置,可以从网上搜到很多,当然最好的方式是从官方获取hibernate的参考手册,来细细研读这些配置,其实许多常用的配置在前面已基本有所提及,所以再来查看hibernate手册时会比较容易,至于一些不常用的配置,建议只做了解,在真正使用时再去细看。 2.使用最佳实践: 在官方推出的手册中,给出了最佳实践,其中提到了许多思...原创 2010-08-26 11:28:17 · 103 阅读 · 0 评论 -
hibernate.cfg.xml文件详解
<?xml version='1.0' encoding='utf-8'?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-con...原创 2010-08-26 15:56:28 · 109 阅读 · 0 评论 -
hiberante入门(十二):继承关系1
3.继承关系: 在前面的部门员工实例中,我们设定的员工只是普通的员工,现在假如有Sale和Skill两类员工,它们作为Employee的子类。如何实现这些子类的映射?为了方便以后的操作说明和不影响以前的操作,我们把前面用到的员工部门类及相关实体配置文件,主配置文件等拷贝到一个新的项目theExtend下进行操作。 (1)共享一张表: 意思是我们把子类的当作父类来处理共同映射成一张表。 &g...原创 2010-08-26 11:01:45 · 107 阅读 · 0 评论 -
hibernate入门(十一):级联操作inversin属性
九、关联关系中的高级应用 1.级联操作: 在前面的一对多操作中已经有所体现,现在回到前面的一对多操作中,进行一些修改,修改内容如下: Set<Employee> emps = new HashSet<Employee>(); emps.add(emp1); emps.add(emp2); depart.setEmps(emps);去掉这段注释,并把“s.sav...原创 2010-08-26 10:56:37 · 111 阅读 · 0 评论 -
hiberante入门(十):其它集合类型
八、其它集合类型 说明:在前面我们已经使用过set集合类型,其实除了set外,在Hibernate中还有list、Bag、Map这三种集合类型。 1. list集合的使用: 在前面的“一对多的关系”,已经使用过<set>,为了保存以前的操作,现重建一个名为“TheCollectionMapping”的新项目,把以前的“一对多关系”中用到的相关内容复制到此项目下即可。但有几点...原创 2010-08-26 10:53:04 · 95 阅读 · 0 评论 -
hibernate入门(二):优化代码
二 优化代码 1.为会么要优化 在前面我们已经知道,获取SessionFactory对象是一个重复的过程。因此我们可以把这个操作写成一Util类。下面我们把这一步写成工具类HibernateUtil,内容如下: [code="java"]package com.asm.hibernate.utils; import org.hibernate.Session; i...原创 2010-08-26 10:17:58 · 64 阅读 · 0 评论 -
hibernate入门(三):对象的三种状态
三 Session中的主要方法 1.保存数据:save,presist 说明:这两种方法的主要区别主要体现在未开启事务时。save方法如果是没开启事务,会执行相关sql语句,随后再回滚。而presist根本就不执行这些sql语句。 2.删除对象:delete 3.更新数据:update 说明,如果数据库中没有记录将会出现异常 4.查找数据:get,立刻访问数据库 load...原创 2010-08-26 10:20:15 · 83 阅读 · 0 评论 -
hibernate入门(四):HQL QBC初步
四 完善工具类及HQL QBC初步相关 1.无聊的讨论: 在前面我们写了一个工具类:HibernateUtil。其实我们还可以把CRUD操作封装到这个工具类中,并把它们都做成静态的,这样这个工具类就可以直接调用了。但是这样的操作对查询数据可能不是很好,因为它的查询方式很多,除非我们一一考虑这些可能涉及到查询方式,并能以重载的形式进行统一管理。其实我也试想过把这此数据库操作方法进行二次封装,...原创 2010-08-26 10:22:58 · 112 阅读 · 0 评论 -
hibernate入门(五):多对一
1.多对一关系映射: 一个部门有可以有多个员工,而一个员工只属于一个部门。从员工角度看,很多员工会隶属一个部门。 现以实例说明,实例概要:一个部门类,只有id和部门名称两个属性。有一个员工类,有id和员工名称及部门对象三个属性。操作步骤如下: >>步骤一,建立Depatment.java及实体配置文件: [code="java"]package com.asm.hibernate...原创 2010-08-26 10:32:44 · 104 阅读 · 0 评论 -
hibernate入门(六):一对多
2.一对多关系映射: 上面提到的多个员工对应于一个部门,是多对一的关系,如果一个部门有多个员工,则用“一对多”的关系来表示这个关系,现接上例继续,以实现一对多的关系映射。具体操作步骤如下: >>步骤一,在Department.java中增加如下内容:private Set emps; 及相应的get/set方法。 >>步骤二,修改Department的实体配置文件。在class元...原创 2010-08-26 10:36:48 · 73 阅读 · 0 评论 -
hibernate入门(七):一对一
3.一对一关系映射: 典型的实例:一个人有一个身份证,而一个身份证只属于某一个人。以此为模型实现一对一关系的映射。下面的实例先以主键进行关联: 主键关联:从表的主键同时又作为外键参考主表的主键。比如在下面的实例中,人作为主表,身份证作为从表。 >>步骤一,建立Person类及相关的实体配置文件。 [code="java"]package com.asm.hibernate.do...原创 2010-08-26 10:42:57 · 85 阅读 · 0 评论 -
hibernate入门(八):多对多
4.多对多关系映射: 典型实例:一个学生可以有多个老师,同样一个老师可以有多个学生,对此设计如下: 学生studnet表: column id name teachers 老师teacher表: column id name studnets 在利用学生查到他所有的老...原创 2010-08-26 10:48:51 · 90 阅读 · 0 评论 -
hibernate入门(九):组件关系映射
5.组件关系映射: 典型实例:每个人有不同的名字,或者多个人可以是同一个名字,对于这种现象可以是“一个一”或者“多对一”,这样会被设计成两张表来映射,而我们采用组件关系来映射就可以在一张表中映射实现。具体过程如下: >>步骤一、编写实体文件Name.java 和People.java Name.java内容如下: 省略getXXX和setXXX() Java代码 ...原创 2010-08-26 10:51:17 · 79 阅读 · 0 评论 -
hibernate.cfg.xml文件详解(annotation 配置)
一、 环境搭建和基本映射 1) 添加Annotation包: hibernate-annotations.jar,ejb3-persistence.jar,hibernate-commons-annotations.jar 2) 在实体类中尽量使用JPA的标准注解来进行对象关系映射。注解可以添加在属性上,也可以添加在getXxx()方法之上。 a) @Entity 映射一个实体类 ...原创 2010-08-26 15:57:16 · 99 阅读 · 0 评论