1# 最重要的三个配置文件最终我们都需要hibernate.properties,hibernate.cfg.xml,Persistence.xml三个配置文件hibernate.properties:用来在服务器端(Tomcat)配置的一个文件,可以填写数据库的配置信息和一些服务器信息, 注:在star里面我用了context.xml,实际上是一样的,在程序起来的时候configurantion这个class照样会去读这样的一个配置文件hiberante.cfg.xml:实际上此文件是properties的升级版,在Hiberante2的时候这些配置都写在properties里,重点是hibernate.cfg.xml里要
指定mapping的persistence的这个配置文件是哪个。persistence.xml:最重要的配置文件,用来持久化POJO对象,描述对象之间的关系以及与RDB之间的关系 注:这三个配置文件分别被读取的顺序是hibernate.properties-->hibernate.cfg.xml-->Persistence.xml 在Configuration被new出来后就开始这个执行流程
2#一个典型的hibernate.properties配置文件如下: hibernate.dialect net.sf.hibernate.dialect.MySQLDialect hibernate.connection.driver_class org.gjt.mm.mysql.Driver hibernate.connection.driver_class com.mysql.jdbc.Driver hibernate.connection.url jdbc:mysql:///sample hibernate.connection.username user hibernate.connection.password mypass
3#一个典型的hibernate.cfg.xml 配置文件如下<?xml version="1.0" encoding="utf-8"?><!DOCTYPE hibernate-configurationPUBLIC "-//Hibernate/Hibernate Configuration DTD//EN""http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd"><hibernate-configuration><!—- SessionFactory 配置 --><session-factory><!—- 数据库URL --><property name="hibernate.connection.url">jdbc:mysql://localhost/sample</property><!—- 数据库JDBC驱动 --><property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property><!—- 数据库用户名 --><property name="hibernate.connection.username">User</property><!—- 数据库用户密码 --><property name="hibernate.connection.password">Mypassword</property><!--dialect ,每个数据库都有其对应的Dialet以匹配其平台特性 --><property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property><!—- 是否将运行期生成的SQL输出到日志以供调试 --><property name="hibernate.show_sql">True</property><!—- 是否使用数据库外连接 --><property name="hibernate.use_outer_join">True</property><!—- 事务管理类型,这里我们使用JDBC Transaction --><property name="hibernate.transaction.factory_class">net.sf.hibernate.transaction.JDBCTransactionFactory</property><!—映射文件配置,注意配置文件名必须包含其相对于根的全路径 --><mapping resource="net/xiaxin/xdoclet/TUser.hbm.xml"/><mapping resource="net/xiaxin/xdoclet/TGroup.hbm.xml"/></session-factory></hibernate-configuration>
4# 最重要的三个classHibernate的基础语义 ===================== configuration ===================== 正如其名,Configuration 类负责管理Hibernate 的配置信息。Hibernate 运行时需要 获取一些底层实现的基本信息,其中几个关键属性包括: 1. 数据库URL 2. 数据库用户 3. 数据库用户密码 4. 数据库JDBC驱动类 5. 数据库dialect,用于对特定数据库提供支持,其中包含了针对特定数据库特性 的实现,如Hibernate数据类型到特定数据库数据类型的映射等。 <-这一信息由hibernate.cfg.xml来配置-> ===================== Session Factory ===================== SessionFactory 负责创建Session 实例。我们可以通过Configuation 实例构建SessionFactory: Configuration config = new Configuration().Configure(); SessionFactory sessionFactory = config.buildSessionFactory(); ===================== Session ===================== Session是持久层操作的基础,相当于JDBC中的Connection: 实例通过SessionFactory实例构建: Configuration config = new Configuration().configure(); SessionFactory sessionFactory = config.buildSessionFactory(); Session session = sessionFactory.openSession(); 之后我们就可以调用Session所提供的save、find、flush等方法完成持久层操作。 flush的方法来强制数据库的同步: --在事务提交的时候, --另外当Session关闭时,也会自动执行flush方法 hibernate自动会执行flush方法。
5#Hibernate异步地执行SQL语句,通常调用Session.save()时并不会执行INSERT语句, 当调用Item.addBid()时也不会立即执行UPDATE语句。 通常SQL语句都在事务终点执行,这种行为称为写后置,
6# 最重要的业务对象 最重要也是最简单的步骤,对Hibernate而言,给用户带来的最大的好处是不用关心何种JDBC以何种方言或方式去和底层的RDB(关系数据库)沟通,配置文件准备完成后,应该把焦点放在真正的业务对象上,也即需要存储的对象上,需要注意的是,和普通的java类不同的是这个类里
面需要一个ID作为此对象在RDB里做主键。
此Hibernate是结合struts一起使用的,感觉搭配很协调。
关于Struts,顺便在这里提一下:实际上就是一个MVC的pattern,只不过struts用一些libabry和一些自己的tag
进行了封装,用起来还是比较方便的,能够充分的体现出框架带来的效果和特色,最大的难点就是写一些适合自己的tag lib出来,写这个之前的话,要根据项目做好结构分析。
