Hibernate: •一个优秀的Java持久化解决方案,是当今主流的对象 + + 关系映射工具。 •Hibernate是对JDBC访问数据的代码做了封装,简化了数据访问层繁琐的重复性代码。 •一个基于JDBC的主流持久性框架,是一个优秀的ORM实现。它能很大程度的简化DAO层的编码工作。 编写程序时,以面向对象的方式处理数据,保存数据的时侯,却以关系型数据库的方式存储。所以客观上需要一种能在两者间进行装换的机制,成为对象——关系映射机制。该机制保存对象和关系数据库表的映射信息,当数据库种在对对象的关系数据库中转换的时候,协助正确的完成转换。 持久化:将程序中数据在瞬时状态和持久状态间转换的机制 •瞬时状态(Transient): 程序运行时,数据保存在内存中,当程序退出后数据不复存在。 •持久化状态: 以文件等形式保存在存储设备(硬盘、光盘)。 JDBC: •一种持久化机制,将程序数据直接保存成文本文件一是持久化机制的一种是实现。 对象和关系映射: •瞬时的数据以对象的形式存在 •持久的数据多保存在关系型数据库中。把对象的数据都保存在关系型数据库中,或者把关系数据库中的数据读取出来在以对象的形式封装。 添加Hibernate后的配置文件: <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <!-- Generated by MyEclipse Hibernate Tools. --> <hibernate-configuration> <session-factory> <property name="connection.url"> jdbc:sqlserver://localhost:1434;Database=Test </property> <property name="connection.username">sa</property> <property name="connection.password">sa</property> <property name="connection.driver_class"> com.microsoft.sqlserver.jdbc.SQLServerDriver </property> <!-- 必须配置,用于配置Hibernate使用的不同数据库类型 --> <property name="dialect"> org.hibernate.dialect.SQLServerDialect </property> <!-- 程序运行时在控制台输出执行的SQL语句 --> <property name="show_sql">true</property> <!-- 数据库和实体的映射信息在映射文件中定义 --> <mapping resource="com/aptech/jb/entity/User.hbm.xml"/> </session-factory> </hibernate-configuration> 数据库和实体的映射信息在映射文件中定义 resource="com/aptech/jb/entity/User.hbm.xml"/>: <?xml version="1.0" encoding="GBK"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > <hibernate-mapping> <!-- name对应 USER实体 类,table对应数据库表的名字--> <class name="com.aptech.jb.entity.User" table="[User]" > <!-- id定义实体的标示属性(对应数据库的主键)--> <id name="uid" type="java.lang.Integer"> <!-- 通过其name属性指定对应的数据库表的主键 --> <column name="UID"></column> <!-- 用于指定主键的生成策略,native表示有数据库生成主键的值,assigned表示在添加爱新记录数到数据前由程序设定主键的值 --> <generator class="native"></generator> </id> <!-- property字节点与Id节点类似,但不能包括generator子节点,每一个property节点指定一对属性和字段的对应关系 --> <property name="uname" type="java.lang.String"> <column name="UNAME" length="50"></column> </property> <property name="upass" type="java.lang.String"> <column name="UPASS" length="50" /> </property> </class> </hibernate-mapping> package com.aptech.jb.hib; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import com.aptech.jb.entity.User; /*** * 添加User * Hibernate中的7个步骤 * @author Administrator */ public class HibTest1 { public static void main(String[] args) { //1 读取配置文件 Configuration conf=new Configuration().configure(); //2 创建SessioinFactory SessionFactory sf=conf.buildSessionFactory(); //3 打开session Session session=sf.openSession(); //事物 Transaction tx=null; try { //4开始一个事物 tx=session.beginTransaction(); //5持久化操作 User user=new User(); user.setUname("Hibernate user"); user.setUpass("password"); session.save(user); //6 提交事物 tx.commit(); } catch(Exception e) { if(null!=tx){tx.rollback();} e.printStackTrace(); }finally { //7 关闭session session.close(); } } }