Hibernate
文章平均质量分 62
confirmAname
编程爱好者
展开
-
复合主键的成员属性为关联实体
有空再写...原创 2013-08-13 01:52:21 · 993 阅读 · 1 评论 -
映射集合属性之②:数组属性
hibernate.cfg.xml :<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"原创 2013-08-11 08:30:42 · 1027 阅读 · 0 评论 -
映射组件属性之③:集合属性的元素为组件
hibernate.cfg.xml :<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"原创 2013-08-11 19:21:00 · 629 阅读 · 0 评论 -
Hibernate3.2(1) : 利用Hibernate框架往数据库表里写一条数据
我们首先下载好Hibernate3.2的包,然后将根目录下的hibernate3.jar核心包和lib目录下的所有依赖jar包添加到工程的lib目录下,再加上mysql的驱动包。script.sql :create database temp;use temp;create table users(id int primary key auto_increment,name var原创 2013-07-06 01:49:25 · 995 阅读 · 0 评论 -
5.6.4 映射集合属性:Set集合属性
我们先将test库里的表删除:然后新建一个web工程,并编写代码:Person.java :public class Person { private int id; private String name; private int age; private Set schools=new HashSet(); public int getId() { r原创 2013-07-11 00:19:39 · 576 阅读 · 0 评论 -
5.6.4 映射集合属性:Map集合属性
我们先将test库里的表删除:然后新建一个web工程,并编写代码:Person.java :public class Person { private int id; private String name; private int age; private Map scores=new HashMap(); public int getId() {原创 2013-07-11 01:32:17 · 687 阅读 · 0 评论 -
5.6.4 映射集合属性:List集合属性
hibernate.cfg.xml :<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"原创 2013-07-10 21:52:13 · 829 阅读 · 0 评论 -
5.6.4 映射集合属性:数组属性
我们先将数据库test里的表删除:然后新建一个工程,并且编写代码:Person.java :public class Person { private int id; private String name; private int age; private String[] schools; public int getId() { return id;原创 2013-07-10 22:21:13 · 559 阅读 · 0 评论 -
Hibernate二级缓存的管理
kkk原创 2013-07-16 00:00:27 · 900 阅读 · 0 评论 -
Hibernate的一二级缓存:二级缓存
SessionFactory级别的二级缓存是全局性的,应用的所有Session都共享这个二级缓存。不过二级缓存默认是关闭的,必须由程序显式开启。一旦在程序中开启了二级缓存,当Session需要抓取数据时,Session将会优先从二级缓存抓取。原创 2013-07-15 17:06:30 · 641 阅读 · 0 评论 -
Hibernate一级缓存的管理
Session级别的一级缓存是局部缓存,它只对当前Session有效;SessionFactory级别的二级缓存是全局缓存,它对所有的Session都有效。========================================================================================================================原创 2013-07-15 23:59:15 · 624 阅读 · 0 评论 -
6.8.2:Session与事务
Hibernate的事务( Transaction对象 )通过Session的beginTransaction( )方法显式打开,Hibernate自身并不提供事务控制行为(没有添加任何附加锁定行为),Hibernate底层直接使用JDBC连接、JTA资源或其他资源的事务。Hibernate只是对底层事务进行了抽象,让应用程序可以直接面向Hibernate事务编程,从而将应用程序和JDBC连接原创 2013-07-14 16:22:15 · 2097 阅读 · 0 评论 -
Hibernate的一二级缓存:一级缓存
Hibernate包括两个级别的缓存:① 默认总是启用的Session级别的一级缓存。② 可选的SessionFactory级别的二级缓存。其中Session级别的一级缓存不需要开发者关心,默认总是有效的,当应用程序保存持久化实体,修改持久化实体时,Session并不会立即把这种改变flush到数据库,而是缓存在当前Session的一级缓存中,除非程序显式调用Session的flu原创 2013-07-15 17:18:36 · 596 阅读 · 0 评论 -
6.4.12:命名HQL查询
HQL查询还支持将查询所用的HQL语句放入配置文件中,而不是代码中。通过这种方式,可以大大提高程序的解耦。在Hibernate映射文件的元素中使用子元素来定义命名查询,使用元素只需要指定一个name属性,指定该命名查询的名字。该元素的内容就是命名查询的HQL语句。下面是定义命名查询的配置文件片段: from Person as p where p.age>?Session里提供了原创 2013-07-14 03:52:33 · 724 阅读 · 0 评论 -
6.4.7:HQL查询的where子句
where子句用于筛选选中的结果,缩小选择的范围。如果没有为持久化实例命名别名,则可以直接使用属性名来引用属性:from Person where name like 'tom%'上面的HQL语句与下面的语句效果相同:from Person as p where p.name like 'tom%'复合属性表达式加强了where子句的功能,例如:from Cat cat where c原创 2013-07-14 00:52:30 · 748 阅读 · 0 评论 -
6.8.3:上下文相关的Session
前面所有的Hibernate应用使用Session时都用到了HibernateUtil工具类,因为该工具类可以保证将线程不安全的Session绑定限制在当前线程内------也就是实现一种上下文相关的Session。public class HibernateUtil{ public static final SessionFactory sessionFactory; static原创 2013-07-15 00:15:40 · 663 阅读 · 0 评论 -
映射组件属性之②:组件属性为集合
如果组件类再次包含了List、Set、Map等集合属性,则我们可以在元素里使用,和子元素来映射这些集合属性。hibernate.cfg.xml :<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http:原创 2013-08-11 11:51:18 · 711 阅读 · 0 评论 -
映射集合属性之①:List集合属性
hibernate.cfg.xml :<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"原创 2013-08-11 08:14:41 · 696 阅读 · 0 评论 -
映射集合属性之③:Set集合属性
hibernate.cfg.xml :<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"原创 2013-08-11 08:48:56 · 716 阅读 · 0 评论 -
基于复合主键的关联关系
有空再写...原创 2013-08-13 01:50:32 · 602 阅读 · 0 评论 -
组件属性包含的关联实体
有空再写...原创 2013-08-13 01:49:50 · 905 阅读 · 0 评论 -
关联映射之⑦:双向1---1关联
有空再写...原创 2013-08-13 01:48:10 · 492 阅读 · 0 评论 -
关联映射之⑥:双向N---N关联
有空再写...原创 2013-08-13 01:47:03 · 663 阅读 · 0 评论 -
关联映射之⑤:双向1---N关联
有空再写...原创 2013-08-13 01:45:15 · 681 阅读 · 0 评论 -
关联映射之④:单向N--->N关联
有空再写...原创 2013-08-13 01:43:43 · 585 阅读 · 0 评论 -
关联映射之③:单向1--->N关联
有空再写...原创 2013-08-13 01:41:52 · 616 阅读 · 0 评论 -
关联映射之①:单向N--->1关联
单向N--->1关联,比如多个人对应同一个住址,只需从人实体端可以找到对应的地址实体,无须关心某个地址的全部住户。为了让两个持久化类支持这种关联映射,程序应该在N的一端的持久化类中增加一个属性,该属性引用1的一端的关联实体。hibernate.cfg.xml :<!DOCTYPE hibernate-configuration PUBLIC "-//Hib原创 2013-08-12 15:02:46 · 793 阅读 · 0 评论 -
关联映射之②:单向1--->1关联
① 基于外键的单向1--->1关联hibernate.cfg.xml :<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-c原创 2013-08-12 15:51:55 · 577 阅读 · 0 评论 -
映射组件属性之⑥:多列作为联合主键
Hibernate还提供了另一种联合主键支持,Hibernate允许直接将持久化类的多列映射成联合主键。如果需要直接将持久化类的多列映射成联合主键,则该持久化类必须满足如下两个条件:① 实现Serializable接口。② 建议根据联合主键列所映射的属性来重写equals和hashCode方法。hibernate.cfg.xml :<!DOCTYPE hibernat原创 2013-08-12 08:37:44 · 698 阅读 · 0 评论 -
映射组件属性之⑤:组件作为复合主键
如果数据库采用简单的逻辑主键,则不会出现组件类型的主键。但在一些特殊的情况下,总会出现组件类型主键,Hibernate也为这种组件类型的主键提供了支持。使用组件作为复合主键,也就是使用组件作为持久化类的标示符,则该组件类必须满足以下要求:① 必须实现java.io.Serializable接口。② 建议正确地重写equals和hashCode方法,也就是根据组件类的关键属性来区分组原创 2013-08-12 08:10:44 · 689 阅读 · 0 评论 -
映射组件属性之④:组件作为Map的索引
hibernate.cfg.xml :<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"原创 2013-08-11 22:53:40 · 647 阅读 · 0 评论 -
映射组件属性之①:组件属性为基本类型
组件属性的意思是:持久化类的属性并不是基本数据类型,也不是字符串,日期等标量类型的变量,而是一个复合类型的对象,在持久化的过程中,它仅仅被当做值类型,而并非引用另一个持久化实体。hibernate.cfg.xml :<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configur原创 2013-08-11 11:00:06 · 770 阅读 · 1 评论 -
映射集合属性之⑤:Map集合属性
hibernate.cfg.xml :<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"原创 2013-08-11 09:45:53 · 681 阅读 · 0 评论 -
映射集合属性之④:bag元素映射
元素既可以映射List集合属性,也可以映射Set集合属性,甚至可以映射Collection集合属性。不管是哪种集合属性,使用元素都将被映射成无序集合,集合属性对应的表没有主键。hibernate.cfg.xml :<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configura原创 2013-08-11 09:12:21 · 809 阅读 · 0 评论 -
6.8.1:事务的概念
每个业务逻辑方法都是由一系列的数据库访问完成的,这一系列的数据访问可能会修改多条数据记录,这一系列的修改应该是一个整体,绝不能仅修改其中的几条。也就是说,多个数据库原子访问应该绑定成一个整体------这就是事务。事务是一个最小的逻辑执行单元,整个事务的执行不能分开执行,要么同时执行,要么同时放弃执行。事务是一步或几步基本操作组成的逻辑执行单元,这些基本操作作为一个整体执行单元,它们要么全部执原创 2013-07-14 15:38:05 · 580 阅读 · 0 评论 -
6.4.10:group by子句
返回聚集值的查询可以对持久化类或组件属性的属性进行分组,分组使用group by子句:select cat.color,sum(cat.weight),count(cat)from Cat catgroup by cat.color;类似于SQL的规则:出现在select后的属性,要么出现在聚集函数中,要么出现在group by的属性列表中。select foo.id,avg(name原创 2013-07-14 01:40:33 · 677 阅读 · 0 评论 -
6.4.9:order by子句
查询返回的集合可以根据类或组件属性的任何属性进行排序:from Person as porder by p.name,p.age;还可使用asc或desc关键字指定升序或降序的排序规则:from Person as porder by p.name asc,p.age desc;如果没有指定排序规则,默认采用升序排列。原创 2013-07-14 00:56:36 · 522 阅读 · 0 评论 -
6.1.2 有连接表的单向1--->1关联
虽然这种情况很少见,但Hibernate同样允许这样采用连接表映射单向1--->1关联。有连接表的单向1--->1关联同样只需要为有连接表的N--->1关联中的元素增加unique="true"属性即可。Person.hbm.xml :<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3原创 2013-07-12 04:53:18 · 637 阅读 · 0 评论 -
5.7 映射组件属性:集合属性的元素为组件
集合除了可以存放基本类型、字符串类型、日期类型之外,还可以存放组件类型(也就是复合类型)。实际上,在更多的情况下,集合里存放的都是组件类型。对于这种持久化类的映射稍有不同,我们映射集合时依然使用、、等元素,只是不再使用元素来映射集合元素,而是用元素来映射集合元素。配置元素时需要指定一个class属性,其值指定了集合里组件对象的类型。的子元素如果组件的属性是基本类型、原创 2013-07-11 17:47:45 · 857 阅读 · 0 评论 -
5.7 映射组件属性:组件属性的子属性为基本类型
组件属性的意思是:持久化类的属性并不是基本数据类型,也不是字符串、日期等标量类型的变量,而是一个复合类型的对象,在持久化的过程中,它仅仅被当作值类型,而并非引用另一个持久化实体。为了映射组件属性,Hibernate提供了元素,每个元素映射一个组件属性。使用元素映射组件属性时需要指定一个name属性,用于指定该组件属性的名称。一个自定义的类通常有自己的属性,如果自己的属性为基本类型、字符串类原创 2013-07-11 16:08:21 · 717 阅读 · 0 评论