使用hibernate最新版本:hibernate-release-4.2.5.Final
本文是对之前的hibernate4 annotation实例的补充说明
hibernate4配置文件头信息(不可缺省)为:
<?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">
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
MySQL方言是:MySQL5Dialect不在是MySQLDialect(写MySQLDialect也不报错,也可以通过)
注意:获取SessionFactory新的方式(new Configuration().configure().buildSessionFactory()方法已过时)
Configuration configuration = new Configuration(); configuration.configure();//默认在classpath下找hibernate.cfg.xml配置文件 //可指定路径 //configuration.configure("/db/hb.cfg.xml");//classpath下找db文件夹下的hb.cfg.xml ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry(); SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
xml,annotation都可以通过上面方式
annotation获取SessionFactory可通过指定注解的类获取,这样的好处就是不需要在hibernate.cfg.xml配置 <mapping>标签了
sessionFactory = configuration.addAnnotatedClass(Teacher.class).buildSessionFactory.(serviceRegistry);
获取Session:
Session session = sessionFactory.getCurrentSession();//推荐使用
getCurrentSession()与openSession()的区别
1、getCurrentSession () 使用当前的session openSession() 重新建立一个新的session
* 采用getCurrentSession()创建的session会绑定到当前线程中,而采用openSession()
创建的session则不会
* 采用getCurrentSession()创建的session在commit或rollback时会自动关闭,而采用openSession()
创建的session必须手动关闭
2、使用getCurrentSession()需要在hibernate.cfg.xml文件中加入如下配置:
* 如果使用的是本地事务(jdbc事务)
<property name="hibernate.current_session_context_class">thread</property>
* 如果使用的是全局事务(jta事务)java分布式事务管理(多数据库访问)
jta由中间件提供(jboss WebLogic等,tomcat不支持)
<property name="hibernate.current_session_context_class">jta</property>
getCurrentSession()使用方法
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
session.save(t);
session.getTransaction().commit();
openSession()使用方法
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
session.save(t);
tx.commit();
session.close();
junit测试遇到的问题:创建SessionFactory初始化异常不提示,比如指定配置文件时写错文件名或者路径,junit不报错。
解决办法:使用try/catch
try { configuration.configure("/db/hb.cfg.xml"); } catch (HibernateException e) { // TODO Auto-generated catch block e.printStackTrace(); }
另一方法是使用main方法测试,个人感觉不好,不够专业,junit是专门的单元测试
相关推荐
学习JPA——Hibernate_Annotation使用实例学习JPA——Hibernate_Annotation使用实例学习JPA——Hibernate_Annotation使用实例
hibernate annotation 实例
JSF+Spring+Hibernate(Annotation)的login小实例,建议入门的朋友看看,老鸟就免了,呵呵。环境:SQLSever2000+jdk5.0+spring2.0+hibernate3.2+jsf
主要介绍了Hibernate的Annotation版Hello world实现方法,详细分析了Annotation的具体使用步骤与Hello world实现方法,需要的朋友可以参考下
里面整合的是springMVC+hibernate3的配置文件和实例,用的是mysql数据库,使用注解annotation,下载后,只需修改jdbc.properties配置文件和加载对应的数据库驱动jar包就可以运行。亲测通过,有问题可以交流。
一步步hibernate annotation练习笔记, 实例操作,从经验中学习
超级详细的SSH2项目实例详解,并且附带两个项目详解。两种注解实现方式。不同的生成数据脚本实现。 在JavaEE企业级开发中,以SSH2框架为核心的应用非常广,大象根据项目实践经验,通过二个实例,详细的为大家讲解...
一个小实例工程,说的是spring3+hibernate4配置声明式事务管理(annotation方式)
声明为双向关联多对多关联关系多对多关联声明。实例:有如下两个实体,商品:Goods,分类Category。两者是多对一的关联关系。使用Hibernate Ann
springmvc注解.doc,Spring注解讲解.doc,struts2标签详解.pdf,struts2常用标签.pdf,Struts2页面开发中常用标签.pdf,Struts2注解详细说明文档.doc,Hibernate注解教程:Hibernate Annotation使用实例.maff
里面有关于springMVC利用cxf发布webservice和调用接口的详细代码,后台用annotation注解关联数据库,dao层完美封装,架构层次分明,用不到cxf的可以到这个链接免费下载springMVC+hibernate3的实例代码...
SSH2 annotation 实现struts2.1.6 spring2.5.6 hibernate3.3 全注解开发 hibernate延迟加载_懒加载 具体应用
现在Annotation越来越流行,最近一段时间也学了一些,EJB3.0、Hibernate、Spring等都很好地支持Annotation,而且熟悉了Annotation的话整个项目开发时间会缩短,代码封装比较好,但是封装带来的就是代码阅读就比较...
3、struts2的配置采用xml(目前不支持annotation),spring和hibernate使用annotation配置; 4、开发者下载该应用后,只需修改WebRoot\WEB-INF\applicationContext.xml,将其中数据库连接信息修改为自己的即可;
<mvc:annotation-driven/> <!--视图解析--> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> ...
jpa的一个实例学习JPA——Hibernate Annotation使用实例
主要介绍了Hibernate hql查询代码实例,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
5.5.2. 使用 JDK 5.0 的注解(Annotation) 5.6. 数据库生成属性(Generated Properties) 5.7. 辅助数据库对象(Auxiliary Database Objects) 6. 集合类(Collections)映射 6.1. 持久化集合类(Persistent ...
5.5.2. 使用 JDK 5.0 的注解(Annotation) 5.6. 数据库生成属性(Generated Properties) 5.7. 辅助数据库对象(Auxiliary Database Objects) 6. 集合类(Collections)映射 6.1. 持久化集合类(Persistent ...
5.5.2. 使用 JDK 5.0 的注解(Annotation) 5.6. 数据库生成属性(Generated Properties) 5.7. 辅助数据库对象(Auxiliary Database Objects) 6. 集合类(Collections)映射 6.1. 持久化集合类(Persistent ...