框架分析(9)-Hibernate 主要对目前市面上常见的框架进行分析和总结,希望有兴趣的小伙伴们可以看一下,会持续更新的。希望各位可以监督我,我们一起学习进步。 Hibernate Hibernate是一个开源的Java持久化框架,它提供了一种将Java对象映射到数据库表的方法,使得开发人员可以使用面向对象的方式来操作数据库。 跨数据库平台 Hibernate可以在不同的数据库平台上运行,它提供了数据库无关性的特性。开发人员可以通过简单的配置文件来适配不同的数据库,而无需修改应用程序的代码。 缺点 学习曲线较陡 由于Hibernate是一个功能较为复杂的框架,学习起来可能会有一定的难度。开发人员需要掌握Hibernate的各种配置和使用方法,以及理解其背后的原理。 性能问题 Hibernate框架在某些情况下可能会引起性能问题。由于Hibernate需要进行对象的映射和关联查询,可能会导致一些额外的开销。
SessionFactory sessionFactory = new Configuration().configure().
发表评论 663 views A+ 所属分类:Hibrenate Hibernate框架应用步骤 ---- 引入hibernate所需jar包 ---- 1.创建实体类,(最好实现序列化接口 DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org /dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> </hibernate-mapping> ``` 3.测试hibernate配置 ``` public 文件,是hibernate的配置文件 ``` <? DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org
2.一级缓存应用: save()。当session对象调用save()方法保存一个对象后,该对象会被放入到session的缓存中。 get()和load()。 其原理是:第一次调用get()方法, Hibernate先检索缓存中是否有该查找对象,发现没有,Hibernate发送SELECT语句到数据库中取出相应的对象,然后将该对象放入缓存中,以便下次使用,第二次调用 -- EHCache的配置,hibernate.cfg.xml --> <hibernate-configuration> <session-factory> <! DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net /hibernate-mapping-3.0.dtd" > <hibernate-mapping> <class> <!
-- Generated by MyEclipse Hibernate Tools. --> 7 <hibernate-configuration> 8 9 java.util.HashSet; 4 import java.util.Set; 5 6 // 标准注解 7 8 import javax.persistence.CascadeType; 9 javax.persistence.GeneratedValue; 7 import javax.persistence.Id; 8 import javax.persistence.JoinColumn; 9 ; 9 import org.hibernate.SessionFactory; 10 import org.hibernate.cfg.AnnotationConfiguration; 11 import 60 id:9 name:计算机科学与技术 description:计算机科学与技术,好啊,真是红啊 E | hongtenzone@foxmail.com B | http://www.cnblogs.com
Hibernate框架的配置一般可以分为以下几个步骤: 1.添加基本的Hibernate Jar包 2.添加注解的Jar包 3.编写Hibernate.cfg.xml文件 4.编写POJO文件,并编写注释 -- Generated by MyEclipse Hibernate Tools. --> 7 <hibernate-configuration> 8 9 javax.persistence.Entity; 7 import javax.persistence.GeneratedValue; 8 import javax.persistence.GenerationType; 9 javax.persistence.GeneratedValue; 7 import javax.persistence.GenerationType; 8 import javax.persistence.Id; 9 注解导入数据库测试类 5 * 用于测试Annotation注解的POJO类是否能自动生成数据库表 6 * 时间:2014年6月4日 10:15:06 7 * @author chenyr 8 */ 9
一、什么是 Hibernate? 二、Hibernate 基础 ----- 数据库操作 在 Hibernate 出现之前,对数据库操作是基于 JDBC,这中间经历了操作 JDBC、封装 JDBC、ORM 三个阶段。 大多数情况下特别是企业级应用,数据持久化往往也就意味将内存中的数据保存到磁盘上加以固化,而持久化的实现过程则大多通过各种关系数据库来完成。 工程,导入Hibernate的核心jar包、支持C3P0数据库连接池的jar包: c3p0-0.9.5.2.jar hibernate-c3p0-5.2.17.Final.jar org.hibernate hibernate-core 5.2.17.Final org.hibernate hibernate-c3p0 5.2.17.Final com.mchange c3p0 0.9.5.2 2
Hibernate第一天(Hibernate的环境搭建、Hibernate的API、Hibernate的CRUD) 1.1以前学习过Hibernate,不过学习的不太扎实,做的项目也不太多,好久时间没用 1.2 Hibernate框架的学习路线 第一天:Hibernate的入门(Hibernate的环境搭建、Hibernate的API、Hibernate的CRUD) 第二天 :Hibernate的一级缓存、其他的API 第三天:Hibernate的一对多配置、Hibernate的多对多的配置 第四天:Hibernate的查询方式、抓取策略 1.3 1.3.3 Hibernate的概述 1.3.3.1 什么是Hibernate Hibernate:Hibernate是一个持久层的ORM框架。 1.4 Hibernate的入门 1.4.1 Hibernate的入门 1.4.1.1 下载Hibernate的开发环境 Hibernate3.x Hibernate4.x Hibernate5
下载地址:http://www.hxtt.com/access.zip,http://www.hxtt.com/test/hibernate.zip。 配置如下:(URL那里可以使用相对路径) xml 代码 <property name="<em>hibernate</em>.dialect"> com.hxtt.support.hibernate.HxttAccessDialect Hibernate描述文件可以是一个properties或xml 文件,其中最重要的是定义数据库的连接。我这里列出的是一个XML格式的hibernate.cfg.xml描述文件。 DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd"> <hibernate-configuration
(String数据结构)6.实现一个简单的唯一ID生成器(incr命令)7.实现博客点赞次数计数器(incr命令 + decr命令)8.社交网站的网址点击追踪机制(长网址转短网址)(Hash数据结构)9. /短网址追踪案例public class ShortUrlDemo { private static final String[] X36_ARRAY = "0,1,2,3,4,5,6,7,8,9, shortUrlDemo.getShortUrlAccessCount(shortUrl); System.out.println("短网址被访问的次数为:" + accessCount); }}9.
这篇主要讲 hibernate缓存 1.缓存的作用是为了提高效率 2.Hibernate的开发效率比较高,但是执行效率相对较低。 3.Hibernate提供了缓存来提高效率。 hibernate缓存分为:一级缓存,二级缓存,查询缓存。 4.一级缓存又称为 session缓存,是线程级别的缓存。 在映射文件 添加 cache 标签,指明使用二级缓存的方式 <hibernate-mapping package="cn.sxt.pojo"> <class name="Book" table= 在 hibernate.cfg.xml 的通用配置中,开启二级缓存和 3.x 不一致 <! 也就是首先要先开启二级缓存,查询缓存的配置,在hibernate.cfg.xml中添加通用配置 <!
DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http ://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <! -- 数据库方言 MySQL --> <property name="<em>hibernate</em>.dialect">org.hibernate.dialect.MySQLDialect</property -- 连接池 C3P0 --> <property name="<em>hibernate</em>.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider ="hibernate.format_sql">true</property> <!
前言: 上一篇简单的讲解了下Hibernate的基础知识。这里对Hibernate比较重要的一些知识点,进行总结和归纳。 关于Hibernate映射 关于Hibernate的映射要说明的一点就是关于ID的访问权限,property以及field的区别。以前使用的时候根本没有注意过这个问题,这里简单的强调一下。 由于hibernate在访问实体模型时,是不考虑权限的,因此这样就避免了用户指定主键。 另外一个知识点就是,如果不通过property指定一个列,而使用field。 那么hibernate就会直接访问属性,而不会通过get set访问属性。 关于对象映射标识符OID 这一块相对来说也是hibernate的重点,什么是OID?如何指定OID? Session缓存中的状态变更 这又是Hibernate的一大块重点! ?
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> < compile group: 'org.hibernate', name: 'hibernate-validator', version: '5.3.4.Final' compile group: 'javax.el 和JPA注解一样,如果验证注解添加到字段上,Hibernate就会直接读取字段的值。如果注解到Getter方法上,Hibernate就会调用方法取得值。 在一个类中不要同时应用这两种方式,会导致重复验证的问题。如果在一个集合上应用Valid注解, Hibernate就会递归验证集合中的每一个元素。 通过这个例子,大家应该明白了Hibernate Validator的基本内容。很多框架比如Spring也提供了相关的内容,能方便的将Hibernate Validator整合到项目中。
在持久化类中, 二进制大对象能够声明为 byte[] 或 java.sql.Blob 类型; 字符串能够声明为 java.lang.String 或 java.sql.Clob 实际上在 Java 应用程序中处理长度超过 news.setTitle("CC"); InputStream stream = new FileInputStream("Hydrangeas.jpg"); Blob image = Hibernate.getLobCreator
这篇主要简单间接 hibernate查询 1.数据库操作中最重要的是查询,Hibernate提供了多种查询方式来帮助程序员快速实现查询功能。 2.Hql 查询: Hql :hibernate query language,Hiberante查询语言。 list){ System.out.println(b.getName()+"--"+b.getAuthor()); } } } 4.本地 sql 查询: hibernate ")) .uniqueResult(); System.out.println(result); } } 6.过滤查询 a).定义过滤器---在hibernate-mapping
hibernate:全自动映射 ORM框架,不需要自己手动去写SQL语句 mybatis:半自动ORM框架,需要自己手动去写SQL语句 hibernate以及mybatis区别 开发速度 二级缓存是 SesionFactory级别的缓存,从应用启动到应用结束有效。 Hibernate对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件,如果用hibernate开发可以节省很多代码,提高效率。 MyBatis容易掌握,而Hibernate门槛较高。 Hibernate优势 Hibernate的DAO层开发比MyBatis简单,Mybatis需要维护SQL和结果映射。 Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL。 Hibernate有更好的二级缓存机制,可以使用第三方缓存。
Hibernate映射的基本结构 Hibernate在实现ORM功能的时候主要用到的文件有:映射类(*.java)、映射文件(*.hbm.xml)和数据库配置文件(*.properties/* > hibernate.cfg.xml文件中链接数据库的信息 <hibernate-configuration> <session-factory > <property name="<em>hibernate</em>.connection.driver_class :3306/<em>hibernate</em>_first</property> <property name="hibernate.connection.username">root</property> < org.hibernate.dialect.MySQLDialect</property> <mapping resource="com/tgb/<em>hibernate</em>/User.hbm.xml" /> </session-factory> </hibernate-configuration> Hibernate实现的关系映射 上面的代码就是基本映射的体现,接下来会继续介绍常用的关系映射
Hibernate设计了CriteriaSpecification作为Criteria的父接口,以下提供了Criteria和DetachedCriteria. : 1.创建一个Criteria实例 org.hibernate.Criteria接口表示特定持久类的一个查询.Session是Criteria实例的工厂. 接口的一个实例. org.hibernate.criterion.Restrictions类定义了获得某些内置Criterion类型的工厂方法. , “Fritz%”, Hibernate.STRING)) .list(); {alias}占位符应当被替换为被查询实体的列别名. 是Projection的实例工厂.我们通过调用setProjection()应用投影到一个查询.
Hibernate配置 核心配置文件 映射配置文件 配置本地的DTD约束 01 核心配置文 Hibernate核心配置文件传递的是连接数据库的必备信息,还有一些可选配置,所以在一个使用Hibernate DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http ## MySQL #hibernate.dialect org.hibernate.dialect.MySQLDialect #hibernate.dialect org.hibernate.dialect.MySQLInnoDBDialect DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org