Hibernate 4.0与之前的3.X版本改进
来源:互联网 发布:横版格斗手游源码 编辑:程序博客网 时间:2024/04/27 21:15
Hibernate 4.0与之前的3.X版本改进很很多,下面先将改动的地方说一下。
1.数据库方言设置
<property name=”dialect”>org.hibernate.dialect.MySQL5Dialect</property>
在3.3版本中连接MySQL数据库只需要指明MySQLDialect即可。在4.1版本中可以指出MySQL5Dialect
2.buildSessionFactory
4.1版本中buildSessionFactory()已经被buildSessionFactory(ServiceRegistry ServiceRegistry)取代
解决办法:
Configuration cfg = new Configuration();
cfg.configure();
ServiceRegistry serviceRegistry =new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry();
SessionFactory sf = cfg.configure().buildSessionFactory(serviceRegistry);
3.annotation
org.hibernate.cfg.AnnotationConfiguration;
Deprecated. All functionality has been moved to Configuration
这个注解读取配置的class已经废弃,现在读取配置不需要特别注明是注解,直接用Configuration cfg = new Configuration();就可以读取注解。
Hibernate4.1版本中推荐使用annotation配置,所以在引进jar包时把requested里面的包全部引进来就已经包含了annotation必须包了
由于Hibernate推荐使用注解,所以基于hbm的配置文件我们就不写了,而且对于新的server读取配置文件的方法建立session对于配置文件的读取貌似也有问题,我测试了好几个都没办法解决,所以这里先只介绍一下基于注解的方法了。
首先是配置文件,这个在hibernate的mannual里面可以找到
- <?xml version='1.0' encoding='utf-8'?>
- <!DOCTYPE hibernate-configuration PUBLIC
- "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
- "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
- <hibernate-configuration>
- <session-factory>
- <!-- Database connection settings -->
- <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
- <property name="connection.url">jdbc:mysql://localhost:3306/test</property>
- <property name="connection.username">sa</property>
- <property name="connection.password">sa</property>
- <!-- JDBC connection pool (use the built-in)
- <property name="connection.pool_size">1</property>
- -->
- <!-- SQL dialect -->
- <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
- <!-- Enable Hibernate's automatic session context management
- <property name="current_session_context_class">thread</property>
- -->
- <!-- Disable the second-level cache -->
- <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>
- <!-- Echo all executed SQL to stdout -->
- <property name="show_sql">true</property>
- <!-- Drop and re-create the database schema on startup
- <property name="hbm2ddl.auto">update</property>
- -->
- <!-- <mapping resource="com/bird/model/Student.hbm.xml"/> -->
- <mapping class="com.bird.model.Teacher"/>
- </session-factory>
- </hibernate-configuration>
然后是具体的类
- package com.bird.model;
- import javax.persistence.Entity;
- import javax.persistence.Id;
- @Entity
- public class Teacher {
- private int id;
- private String name;
- private String title;
- @Id
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getTitle() {
- return title;
- }
- public void setTitle(String title) {
- this.title = title;
- }
- }
其中的表名和类名相同,其他的字段和Bean的属相相同。
最后是使用他
- package com.bird.test;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.hibernate.cfg.Configuration;
- import org.hibernate.service.ServiceRegistry;
- import org.hibernate.service.ServiceRegistryBuilder;
- import com.bird.model.Teacher;
- public class TeacherTest {
- /**
- * @param args
- */
- public static void main(String[] args) {
- Teacher t = new Teacher();
- t.setId(1);
- t.setName("t1");
- t.setTitle("中级");
- Configuration cfg = new Configuration();
- cfg.configure();//读取配置文件
- ServiceRegistry serviceRegistry =new ServiceRegistryBuilder().
- applySettings(cfg.getProperties()).buildServiceRegistry();
- SessionFactory factory = cfg.configure().buildSessionFactory(serviceRegistry);
- Session session = factory.openSession();
- session.beginTransaction();
- session.save(t);
- session.getTransaction().commit();
- session.close();
- factory.close();
- }
- }
这样基于最新的hibernate4.1.1的helloworld就OK了。
- Hibernate 4.0与之前的3.X版本改进
- python3.X与之前版本的不同(不断更新...)
- iOS8与之前版本的【异同】
- HTML5与之前版本的不同
- CSS3与之前版本的区别
- Bluetooth HIDL与之前版本的变化
- 安卓4.x版本与之前区别
- 对于cocos2d-x 3.0版本与之前版本的区别分析-------------cocos2d-x3.0正式版本(7.1)
- php5.3/php5.4与之前的版本差异以及(php5.2x/php5.4x性能对比)
- iOS7与之前版本差异
- iOS7与之前版本差异
- iOS7与之前版本差异
- android 学习九 Fragments 介绍(android3.0及4.0与之前版本区别的部分)
- android Fragments 介绍(android3.0及4.0与之前版本区别的部分)
- android 学习九 Fragments 介绍(android3.0及4.0与之前版本区别的部分)
- 重新安装mysql时,与之前版本冲突的处理问题
- Ext4与之前版本的差别(不断更新)
- smarty3.0以上版本清除缓存与之前的区别
- 浅析3GPP移动流媒体服务技术规范
- 临界段类(CCriticalSection)——MFC
- 用VS2010构建MASM的编程环境
- 链表头结点存在的意义
- 网页中图片格式的选取
- Hibernate 4.0与之前的3.X版本改进
- Testing ASP.NET Applications_学习笔记V0.1
- Android项目更换开发环境时出现的 java.lang.VerifyError 异常解决办法
- seekbar textview 占位符
- linux内核代码中__alignof__ 对齐
- Bjontegaard metric :BDBR和BD-PSNR
- jQuery - 删除元素
- 开始使用MASM
- linux设备驱动--内存和I/O访问