`

Hibernate4 annotation实例补充

 
阅读更多

使用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是专门的单元测试
分享到:
评论

相关推荐

    hibernate-annotation 所需要的jar包

    在Java开发中,Hibernate与Annotation的结合使用极大地简化了数据持久化的复杂性,使得开发人员无需编写大量的SQL代码。下面将详细介绍Hibernate-Annotation所涉及到的知识点。 1. **Hibernate框架**: Hibernate是...

    hibernate-Annotation.jar

    从Hibernate 4.x开始,Annotation已经成为主要的映射方式,XML配置逐渐退居二线。新的版本集成了对Annotation的支持,因此,对于新项目来说,直接使用注解进行对象关系映射是最佳实践。同时,Hibernate 4.x和5.x版本...

    hibernate annotation hibernate3

    `@Entity`注解用于标记一个Java类为数据库中的实体表,每个实例对应表中的一条记录。例如: ```java @Entity public class User { //... } ``` 2. 主键注解:`@Id` `@Id`注解用于指定实体类中的主键字段,...

    Hibernate -annotation 学习笔记

    通过编写简单的HelloWorld程序,引入Hibernate和Annotation,创建第一个数据库操作实例,了解基本的Session和Transaction使用。 ### 第 7 课 建立 Annotation 版本的 HelloWorld 在此阶段,将HelloWorld示例转换为...

    hibernate annotation jar

    4. Java 5及以上版本:Hibernate 3.3开始支持Java 5的注解,这意味着开发者可以利用这些新特性,如`@Override`、`@Deprecated`等,以及在ORM中使用的特定Hibernate注解。 5. XML与注解的对比:在Hibernate 3.3之前...

    JSF+Spring+Hibernate(Annotation)

    JSF+Spring+Hibernate(Annotation)的login小实例,建议入门的朋友看看,老鸟就免了,呵呵。环境:SQLSever2000+jdk5.0+spring2.0+hibernate3.2+jsf

    Hibernate注解编程实例

    - **使用注解映射**: `&lt;mapping class="com.xmxz.hibernate.annotation.IdCard"/&gt;` 和 `&lt;mapping class="com.xmxz.hibernate.annotation.Person"/&gt;` 表明使用注解的方式来进行映射。 - **使用XML映射**: `...

    hibernate_annotation中文版

    《Hibernate Annotation 中文版详解》 Hibernate 是一个广泛使用的开源对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。而Hibernate Annotation则是Hibernate框架中的一个重要组成部分,它...

    Hibernate Annotation入门

    **Hibernate Annotation 入门** Hibernate 是一款非常流行的Java对象关系映射(ORM)框架,它允许开发者使用面向对象的方式操作数据库。而Hibernate Annotation是Hibernate的一个重要特性,它通过在Java类和字段上...

    Hibernate Annotation 学习笔记

    本文将通过一个实际操作的实例,逐步介绍Hibernate Annotation的基础知识。 一、开始实践 1. 项目准备:首先,我们需要准备JDK 5.0或更高版本,以及Hibernate 3.2.2.ga、hibernate-annotations-3.2.1.GA和ejb3-...

    hibernate 中文文档 and _annotation.chm

    《Hibernate中文文档与Annotation》 Hibernate是一款开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。Hibernate允许开发人员将Java对象模型与数据库表进行映射,从而避免了传统的JDBC...

    Hibernate的Annotation版Hello world实例

    在这个“Hibernate的Annotation版Hello world实例”中,我们将探讨如何利用Hibernate的注解(Annotation)功能来简化实体类的配置,并实现一个基本的数据操作。 首先,Hibernate注解是自Hibernate 3.2版本开始引入...

    hibernate中文APIhibernate annotation 中文API

    4. @Entity、@Table、@Id和@GeneratedValue是常见的Hibernate Annotation,用于定义实体类和表的关系、主键规则等。 5. 提供的两个.chm文件是Hibernate的中文参考文档,可以帮助开发者快速理解和使用Hibernate及它的...

    hibernate中用annotation的demo

    本教程将深入探讨如何在Hibernate中使用注解(Annotation)进行配置,从而避免传统的XML配置文件。通过这种方式,我们可以更直观地将数据库表与Java实体类关联起来。 首先,让我们理解什么是Hibernate注解。...

    springMVC+Hibernate3整合实例

    里面整合的是springMVC+hibernate3的配置文件和实例,用的是mysql数据库,使用注解annotation,下载后,只需修改jdbc.properties配置文件和加载对应的数据库驱动jar包就可以运行。亲测通过,有问题可以交流。

    第一个Hibernate with Annotation程式(转)

    【标题】:“第一个Hibernate with Annotation程式(转)” 在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发人员使用面向对象的编程方式来操作数据库,而无需直接编写SQL语句。这个标题...

    spring_hibernate_annotation的三种实现

    以下将详细介绍"spring_hibernate_annotation的三种实现"。 1. **基于XML的配置** 在早期的Spring和Hibernate集成中,通常使用XML配置文件来定义Bean和数据源,以及映射信息。Spring的`applicationContext.xml`...

    Hibernate Annotation 基于外键的一对多双向关联

    我们将通过具体实例来解析这个主题,并结合源码分析其工作原理。 首先,我们要明白一对多关联意味着一个实体可以拥有多个关联的实体。在数据库中,这通常通过外键实现,即在一个表中有一个字段指向另一个表的主键。...

Global site tag (gtag.js) - Google Analytics