总结Hibernate4.1+版本与Hibernate3.3+版本区别
利用休假时间好好学习了当今流行的ORMapping框架-Hibernate,看完了马士兵老师经典的Hibernate视频教程,也算是小小入门了吧。
马老师在讲课中使用的Hibernate版本是3.3.2,而我们现在从Hibernate官网上下载的最新版本是4.2.3。
当然Hibernate从版本3+到4+升级过程(为了适应JPA2.0?)中还是有点些变化的,因为我是用4.2.3版本做实验的,所以下面稍微总结下区别。(欢迎批评指正)
1.使用hibernate.properties配置文件
以下配置的信息可以不用写在传统的hibernate.cfg.xml中了,可以写在hibernate.properties配置文件中。
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.url=jdbc:mysql://localhost:3306/hibernate
hibernate.connection.password=root
hibernate.connection.username=root
hibernate.connection.pool_size=100
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
hibernate.show_sql=true
hibernate.format_sql=true
其中在3.3+版本中连接MySQL数据库只需要指明MySQLDialect即可。在4.1+版本中可以指出MySQL5Dialect。
2.SessionFactory对象的buildSessionFactory方法
4.1+版本中不带参数的buildSessionFactory()已经被废除,取而代之的是buildSessionFactory(ServiceRegistry ServiceRegistry)
为此我们采用以下方法:
public class HibernateTest {
private static SessionFactory sf = null;
@BeforeClass
public static void beforeClass(){
Configuration cfg = new Configuration().configure();
ServiceRegistryBuilder srb = new ServiceRegistryBuilder();
//默认读取hibernate.properties里面的配置信息
sf = cfg.buildSessionFactory(srb.buildServiceRegistry());
}
@AfterClass
public static void afterClass(){
sf.close();
}
这里有两点需要注意
1)若使用XML配置文件的方式配置实体类:需要在代码中手动加入resource文件
(在hibernate.cfg.xml中配置已经无效<mapping resource="cn/ntt/china/model/Student.hbm.xml"/>)
例:cfg.addResource("cn/ntt/china/model/Student.hbm.xml");//须指明全路径
2)若使用注解方式:与原来3.3+版本一样在需要在hibernate.cfg.xml中加入配置即可
例:<mapping class="cn.ntt.china.model.Teacher"/>
另外org.hibernate.cfg.AnnotationConfiguration;(Deprecated. All functionality has been moved to Configuration)
这个注解读取配置的class已经废弃,现在读取配置不需要特别注明是注解。
为了适应JPA规范,Hibernate4.1+版本中推荐使用annotation配置。
所以在引进jar包时把requested里面的包全部引进来就已经包含了annotation必须包了。
3.二级缓存配置
原来3.3+:
<property name="cache.use_query_cache">true</property>
<property name="cache.use_second_level_cache">true</property>
<property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
现在4.1+:
<property name="cache.use_query_cache">true</property>
<property name="cache.use_second_level_cache">true</property>
<property name="cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>
Hibernate学到现在算到告一段落。现在回想下Hibernate的核心思想其实就是把数据库中表与表的关系的操作,转化封装为java对象与对象的操作!那为什么要这样做呢?
原因很简单这样做符合我们日常面向对象编程的习惯,并且简化持久层操作的代码。
sun为这个思想制定了一套规范,即JPA!可见在不久的将来Java持久化操作要被JPA统一。
最后感谢马老师的在视频中的精彩讲解!
总结Hibernate4.1+版本与Hibernate3.3+版本区别的更多相关文章
- hibernate4.0+版本和3.0+版本的区别总结
自己总结下hibernate4.1版本中的新特性和hibernate3.3做区别 1.数据库方言设置 <property name=”dialect”>org.hibernate.dial ...
- 高版本->低版本迁移,低版本客户端连接高版本数据库EXP导出报错EXP-00008,ORA-01455,EXP-00000
生产环境: 源数据库:RHEL + Oracle 11.2.0.3 目标数据库:HP-UX + Oracle 10.2.0.4 需求:迁移部分表 11.2.0.3-->10.2.0.4,若 ...
- 高版本api在低版本中的兼容
直接上例子,看如何避免crash. eg:根据给出路径,获取此路径所在分区的总空间大小. 文档说明:获取文件系统用量情况,在API level 9及其以上的系统,可直接调用File对象的相关方法,以下 ...
- 怎样去除SVN中的某个版本之前的所有版本
地狱门神 在某些时候,我们可能需要一个存放二进制文件的SVN库,用来保存每日构建的结果等.但是这种库会趋于越来越大,最后会占用很多磁盘空间.这时我们会想到能不能删掉某个版本之前的所有版本,以节省磁盘空 ...
- SQL Server 2000 sp2 及更低版本不受此版本的 Windows 支持
SQL Server 2000 sp2 及更低版本不受此版本的 Windows 支持.在安装了 SQL Server 2000 之后请应用 sp3. 出现这种现象的原因在于:Windows Serve ...
- 如何让VMware低版本运行VMware高版本创建的虚拟机
如何让VMware低版本运行VMware高版本创建的虚拟机 问题描述: 本机安装的VMware Workstation是10版本,之前VMware Workstation 11版本创建的虚拟机,在运行 ...
- PHP有两个不同的版本:4.x系列版本和5.x系列版本
在为用户提供动态内容方面,PHP和MySQL是一个强大的组合.这些年来,这两项产品已经跨越了它们最初的应用舞台,现在,一些世界上最繁忙的网站也在应用它们.虽然它们当初都是开源软件,只能在UNIX/Li ...
- MongoDB3.2版本与3.0版本写场景压力测试对比
我们主要是为了测试journal对写操作性能的影响.分别测试了3.2版本,3.0版本在ramdisk,hdd上有journal,和没journal的情况. 发现一个很怪异的现象,3.2版本时候,随着y ...
- DOS批处理命令判断操作系统版本、执行各版本对应语句
DOS批处理命令判断操作系统版本.执行各版本对应语句 昨天在家里试用 netsh interface ip set address 这些命令更改上网IP.DNS.网关等,今天将那些代码拿来办公室 ...
随机推荐
- Django MTV
MTV模型 Django的MTV分别代表: Model(模型):负责业务对象与数据库的对象(ORM) Template(模版):负责如何把页面展示给用户 View(视图):负责业务逻辑,并在适当的时候 ...
- 浅析mpvue的事件代理系统
前言 说来惭愧,用 mpvue 大半年,小程序快一年了,居然还试图用 event.stopPropagation 方法阻止事件冒泡,也是有点蠢.痛定思痛,写篇博文来认真捋一捋小程序的事件系统和 mpv ...
- nginx如何实现高并发
nginx如何实现高并发 简单来讲,就是异步,非阻塞,使用了epoll和大量的底层代码优化. 稍微详细一点展开的话,就是nginx的特殊进程模型和事件模型的设计. 进程模型 nginx采用一个mast ...
- 使用crypt配置Basic Auth登录认证
简介 Basic Auth用于服务端简单的登录认证,通常使用服务器Nginx.Apache本身即可完成.比如我们要限定某个域名或者页面必须输入用户名.密码才能登录,但又不想使用后端开发语言,此时Bas ...
- Jackson序列化LocalDate与Springboot集成
前言 Java8的date API一经推出便广受好评,今日也准备用一用,然后就用出问题了.基本用法见https://www.cnblogs.com/woshimrf/p/java8-date-api. ...
- ftp 读取目录列表失败
在防火墙设置的“例外”选项卡中添加程序: C:\WINDOWS\system32\inetsrv\inetinfo.exe,确定即可!
- dfs问题总结
组合总和——给定元素不重复 需求:给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candida ...
- python机器学习笔记 ID3决策树算法实战
前面学习了决策树的算法原理,这里继续对代码进行深入学习,并掌握ID3的算法实践过程. ID3算法是一种贪心算法,用来构造决策树,ID3算法起源于概念学习系统(CLS),以信息熵的下降速度为选取测试属性 ...
- JavaWeb学习 (十二)————使用Session防止表单重复提交
在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...
- #6 Python数据类型及运算
前言 前文讲述了Python的输入输出以及变量的相关知识点,本节将探讨Python的数据类型以及数据之间的运算方式! 一.Python数据类型 上一节弄清了变量,其实变量所指向的值是有自己独特的数据类 ...