5 -- Hibernate的基本用法 -- 要点】的更多相关文章

Hibernate的基本用法 ⊙ ORM的基本知识 ⊙ ORM和Hibernate的关系 ⊙ Hibernate的基本映射思想 ⊙ Hibernate入门知识 ⊙ 使用Eclipse开发Hibernate应用 ⊙ Hibernate的体系和核心API ⊙ Hibernate的配置文件 ⊙ 持久化类的基本要求 ⊙ 持久化对象的状态 ⊙ Hibernate的基本映射 ⊙ 数据库对象映射 ⊙ List.Set和Map等集合属性映射 ⊙ 组件属性映射 ⊙ 集合元素为符合类型的映射 ⊙ 符合主键映射 ⊙…
注解映射必须满足两大条件:Hibernate3.2以上版本和JSEE 5. @Entity 类注释,所有要持久化的类都要有@Entity   public class Org  implements java.io.Serializable {    }   @Id 主键       @Id        @GeneratedValue        private String orgId;         private String orgName;   @Column(name="...…
在hibernate的Session里面使用createCriteria可以创建一个Criteria实例帮助我们进行条件查询,不用自己串hql语句,很方便. 用法很简单,首先传Class实例创建Criteria,Class实例对应你想要查询的那个实体: Criteria c = session.createCriteria(Person.class); 然后调用Criteria的add方法加入条件(Restrictions).常用的条件有: 方法 說明 Restrictions.eq 等於 Re…
方法说明 方法 说明 Restrictions.eq = Restrictions.allEq 利用Map来进行多个等于的限制 Restrictions.gt > Restrictions.ge >= Restrictions.lt < Restrictions.le <= Restrictions.between BETWEEN Restrictions.like LIKE Restrictions.in in Restrictions.and and Restrictions.…
1.类级别注解 @Entity     映射实体类 @Table    映射数句库表  @Entity(name="tableName") - 必须,注解将一个类声明为一个实体bean 属性: name - 可选,对应数据库中的一个表.若表名与实体类名相同,则可以省略. @Table(name="",catalog="",schema="")  - 可选,通常和@Entity 配合使用,只能标注在实体的 class 定义处,表…
导读:  在使用hibernate进行持久化时,有时需要动态的改变对象的加载,比如在编辑页面里面lazy=true,而在浏览页面lazy=false,这样可以在需要lazy的地方才进行控制.而配置文件中Lazy属性是全局控制的,如何处理呢?  当元素或者元素的lazy属性为true时,load() or get() or find()加载这些对象时,Hibernate不会马上产生任何select语句,只是产生一个Obj代理类实例,只有在session没有关闭的情况下运行Obj.getXxx()时…
一个典型的事务应该使用下面的形式 在创建完Session对象后即使用beginTransaction()启动事务 从此开始直到commit()之间的代码 都会处于同一个事务中 这两个函数之间所有的数据库代码都会在commit()时一次性提交 在提交时 如果某一句代码执行出现异常 就会回滚这一次事物之间的所有执行代码 public User getUser(String username) throws HibernateException { Session session = null; Tr…
原本我的写法:Query repeatClientQuery=querysession.createQuery("from ClientInfo as a " +"where a.client_name like :name" ); repeatClientQuery.setParameter("name",clientname); 查询无结果. LIKE 'Mc%' 将搜索以字母 Mc 开头的所有字符串(如 McBadden). LIKE '%…
Restrictions.eq --> equal,等于. Restrictions.allEq --> 参数为Map对象,使用key/value进行多个等于的比对,相当于多个Restrictions.eq的效果 Restrictions.gt --> great-than > 大于 Restrictions.ge --> great-equal >= 大于等于 Restrictions.lt --> less-than, < 小于 Restrictions…
1. package org.crazyit.app.domain; import javax.persistence.*; /** * Description: <br/> * ��վ: <a href="http://www.crazyit.org">���Java����</a> <br/> * Copyright (C), 2001-2016, Yeeku.H.Lee <br/> * This program is p…
Hibernate提供三种方式将POJO变成PO类: 1. 使用持久化注解(以JPA标准注解为主,如果有一些特殊要求,则依然需要使用Hibernate本身提供的注解). 2. 使用JPA2 提供的XML配置描述文件(XML deployment descriptor),这种方式可以让Hibernate的PO类与JPA实体类兼容. 3. 使用Hibernate传统的XML映射文件(*.hbm.xml文件的形式). 对于Hibernate PO类而言,通常可以采用如下两个注解来修饰它: 1. @En…
1. 持久化实体 Serializable save(Object obj) : 将obj对象变为持久化状态,该对象的属性将被保存到数据库. void persist(Object obj) : 将obj对象转化为持久化状态,该对象的属性将被保存到数据库. Serializable save(Object obj,Object pk)  : 将obj对象保存到数据库,保存到数据库时,指定主键值. void persist(Object obj,Object pk) : 将obj对象转化为持久化状…
1. 瞬态 : 对象有new操作符创建,且尚未与Hibernate Session关联的对象被认为处于瞬态.瞬态对象不会被持久化到数据库中,也不会被赋予持久化标识.如果程序中失去了瞬态对象的引用,瞬态对象将被垃圾回收几只销毁.使用Hibernate Session可以将其变为持久化状态. 2. 持久化:持久化实例在数据库中有对应的记录,并拥有一个持久化标识(identifier).持久化的实例可以是刚刚保存的,也可以是刚刚被加载的.无论哪一种,持久化对象都必须与指定的Hibernate Sess…
1.  提供一个无参数的构造器:所有的持久化类都应该提供一个无参数的构造器,这个构造器可以不采用public访问控制符.只要提供了无参数的构造器,Hibernate就可以使用Constructor.newInstance()来创建持久化类的实例了.通常,为了方便Hibernate在运行时生成代理,构造器的访问控制修饰符至少是包课件的,及大于或等于默认的访问控制符. 2. 提供一个标识属性:标识属性通常映射数据库表的主机字段.这个属性可以叫任何明智,其类型可以是任何的基本类型.基本类型的包装类型.…
Hibernate其他常用的配置属性: ⊙ hibernate.show_sql : 是否在控制台输出Hibernate持久化操作底层所使用的SQL语句.只能为true和false两个值. ⊙ hibernate.format_sql : 是否将SQL语句转成格式良好的SQL.只接受true和false两个值. ⊙ hibernate.use_sql_comments : 是否在Hibernate生成的SQL语句中添加有助于调试的注释.只接受true和false值. ⊙ hibernate.jd…
外连接抓取能限制执行SQL语句的次数来提高效率,这种外连接抓取通过在单个select语句中使用outer join来一次抓取多个数据表的数据. 外连接抓取允许在单个select语句中,通过@ManyToOne.@OneToMany.@ManyToMany和@OneToOne等关联获取连接对象的整个对象图. 将hibernate.max_fetch_depth 设为0,将在全局范围内禁止外连接抓取,设为1或更高值能启用N-1或1-1的外连接抓取.除此之外,还应该在持久化注解中通过fetch=Fet…
Hibernate的SessionFactory可持有一个可选的二级缓存,通过使用这种二级缓存可以提高Hibernate的持久化访问的性能. Hibernate的二级缓存属性: ⊙ hibernate.cache.use_second_level_cache : 用于设置是否启用二级缓存,该属性可完全禁止使用二级缓存. ⊙ hibernate.cache.region.facotry_class : 该属性用于设置二级缓存RegionFactory实现类的类名. ⊙ hibernate.cach…
事务也是Hibernate持久层访问的重要方面,Hibernate不仅提供了局部事务支持,也允许使用容器管理的全局事务. Hibernate关于事务管理的属性: ⊙ hibernate.transaction.factory_class : 指定Hibernate所用的事务工厂的类型,该属性值必须是TransactionFactory的直接或间接子类. ⊙ jtaUserTransaction : 该属性值是一个JNDI名,Hibernate将使用JTATransactionFactory从应用…
如果无须Hibernate自己管理数据源,而是直接访问容器管理数据源,Hibernate可使用JNDI(Java Naming Directory Interface,Java命名目录接口)数据源的相关配置. 连接JNDI数据源的主要配置属性: ⊙ hiberante.connection.datasource : 指定JNDI数据源的名字. ⊙ hibernate.jndi.url : 指定JNDI提供者的URL,该属性是可选的.如果JNDI与Hibernate持久化访问的代码处于同一个应用中…
Hibernate底层依然使用SQL语句来执行数据库操作,虽然所有关系数据库都支持使用标准SQL语句,但所有数据库都对标准SQL进行了一些扩展,所以在语法细节上存在一些差异.因此,Hibernate需要根据数据库来识别这些差异. 同样的应用程序,如果在不同的数据库之间迁移,底层数据库的访问细节会发生改变,开发者需要做的是,告诉Hibernate应用程序的底层即将使用哪种数据库  ------  这就是数据库方言. Properties : MySQL org.hibernate.dialect.…
Hibernate需要进行数据库访问,因此必须设置连接数据库的相关属性.所有Hibernate属性的名字和语义都在org.hibernate.cfg.Environment中定义. 关于JDBC连接配置中最重要的设置: ⊙ hiberante.connection.driver_class : 设置连接数据库的驱动. ⊙ hibernate.connection.url : 设置所需连接数据库服务的URL. ⊙ hibernate.connection.username : 设置连接数据库的用户…
hibernate.properties : project\etc\hibernate.properties hibernate.cfg.xml : project\etc\hibernate.cfg.xml 所有hibernate相关配置文件都在project中.包括class.hbm.xml.*.dtd 啦啦啦…
org.hibernate.cfg.Configuration实例代表了应用程序到SQL数据库的配置信息,Configuration对象提供了一个buildSessionFactory()方法,该方法可以产生一个不可变的SessionFactory对象. 另外,先实例化Configuration实例,然后在添加Hiberante持久化类.Configuration对象可调用addAnnotatedClass()方法逐个地添加持久化类,也可调用addPackage()方法添加指定包下的所有持久化类…
Hibernate的持久化操作离不开SessionFactory对象,这个对象是整个数据库映射关系经过编译后的内存镜像,该对象的openSession()方法可打开Session对象.该对象通常由Configuration对象产生. 每个Hibernate配置文件对应一个Configuration对象.在极端的情况下,不使用任何配置文件,也可创建Configuration对象. 5.4.1 创建Configuration对象 5.4.2 hibernate.properties文件与hibern…
⊙ SessionFactory : 这是Hibernate的关键对象,它是单个数据库映射关系经过编译后的内存镜像,也是线程安全的.它是生成Session的工厂,本身需要依赖于ConnectionProvider.该对象可以在进程或集群的级别上,为那些事务之间可以重用的数据提供可选的二级缓存. ⊙ Session : 它是应用程序与持久存储层之间交互操作的一个单线程对象.它也是Hibernate持久化操作的关键,所有的持久化对象必须在Session管理下才可以进行持久化操作.此对象生存期河段.它…
在所有的ORM框架中有一个非常重要的媒介 : PO(持久化对象:Persistent Object).持久化对象的作用是完成持久化操作,简单地说,通过该对象可对数据执行增.删.改的操作 ------ 以面向对象的方式操作数据库. Hibernate直接采用POJO作为持久化类.为了使POJO具备持久化操作的能力,需要添加注解:@Entity.@Table.@Id.@GeneratedValue等. POJO : News package hibernate5chapter; import jav…
1. 下载Hibernate压缩包 2. 解压:文件结构 ⊙ documentation : 该路径下存放了Hibernate的相关文档,包括Hibernate的参考文档和API文档等. ⊙ lib : 该路径下存放了Hibernate x.x 的核心类库,以及编译和运行所依赖的第三方类库.其中lib路径下的required子目录下保存了运行Hibernate x.x 的核心类库,以及必须的第三方类库. ⊙ project : 该路径下存放了Hibernate各种相关项目的源代码. ⊙ lgpl…
5.2.1 Hibernate 下载和安装 5.2.2 Hibernate 的数据库操作 5.2.3 在Eclipse中使用Hibernate 啦啦啦…
Hibernate 不仅仅管理Java类到数据库的映射(包括Java数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和JDBC处理数据的时间.…
⊙ JPA : JPA本身只是一种ORM规范,并不是ORM产品.它是Java EE规范制定者向开源世界学习的结果.JPA实体与Hibernate PO十分相似,甚至JPA实体完全可作为Hibernate PO类使用,因此很多地方也把Hibernate PO称为实体.相对于其他开源ORM框架,JPA的最大优势在于它的官方标准,因此具有通用性,如果应用程序面向JPA编程,那么应用程序就可以在各种ORM框架之间自由切换:Hibernate.TopLink.OpenJPA等. ⊙ Hibernate :…