注册
 找回密码
 注册
江西广告网
查看: 296|回复: 0
打印 上一主题 下一主题

Java基础知识:谈谈简单Hibernate入门

[复制链接]

该用户从未签到

1
跳转到指定楼层
发表于 2009-1-19 09:57:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
Hibernate简介      Hibernate寓意:Let Java objects hibernate in the relational database.      Hibernate 是Java应用和关系数据库之间的桥梁,负责Java对象和关系数据库之间的映射的ORM中间件。Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java开发人员可以随心所欲的使用对象编程思维来操纵数据库。简单的说就是:      1.封装了通过JDBC访问数据库操作。      2.向上层应用提供访问面向对象数据访问的API。      创建Hibernate配置文件      通过一个例子practice 演示如何运用Hibernate来访问关系数据库。      Practice 工程的功能:      通过Hibernate保存客户(customer)信息。      其Hibernate应用结构图如下:   ―――――――――――――――――――――――――――   Practice 应用   Customer Class ; action Class;Business Class   ――――――――――――――――――――――――――――   ――――――――――――――――――――――――――――   Hibernate xml   对象-关系映射文件      Hibernate ApI                  Hibernate 配置文件   ――――――――――――――――――――――――――――   ――――――――――――――――――――――――――――   关系数据库(Mysql)   CUSTOMERS 表   ――――――――――――――――――――――――――――      创建持久化类      Hibernate 从Hibernate配置文件中读取和数据库连接相关的信息。      配置文件有两种形式:      一种是XML格式的文件:hibernate.cfg.xml      一种是Java属性文件:hibernate.properties      这个实例中我们将使用hibernate.cfg.xml。           "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">            true       false       net.sf.hibernate.dialect.MySQLDialect       org.gjt.mm.mysql.Driver       jdbc:mysql://localhost:3306/netstore       root       123456       true       gb2312                   插入位置在src目录下:      创建O/R对象-关系映射文件   创建持久化的类Customer.java      package entity;import java.io.Serializable;   public class Customers implements Serializable {       private Integer id;       private String name;       private int age;       public Customers() {       }       public int getAge() {           return age;    }       public void setAge(int age) {           this.age = age;       }       public Integer getId() {           return id;       }       public void setId(Integer id) {           this.id = id;       }       public String getName() {           return name;       }       public void setName(String name) {           this.name = name;       }}      Get/set 方法的命名必须符合JavaBean的规范,否则Hibernate会报出异常,具体请参照相关资料。      关于Serializable接口:   Hibernate 并不要求持久化类必须实现java.io.Serializable接口,但是对于采用分布式结构的Java应用,当Java对象在不同的进程节点之间传输时,这个对象必须实现这个接口;如果希望对HttpSession中存放的Java对象进行持久化,那么这个Java对象必须实现Serializable接口。   关于不带参数的构造方法:      public Customers() {    }      Hibernate要求持久化类必须提供一个不带参数的默认的构造方法,原因请参考相关资料。      创建Mysql数据库   数据库名称:netstroe   Customer表DDL定义如下:CREATE TABLE `customers` ( `Id` bigint(20) NOT NULL default '0', `name` varchar(15) default NULL, `age` int(11) default NULL, PRIMARY KEY (`Id`)) TYPE=MyISAM;      创建对象-关系映射文件   创建对象-关系映射文件:Customers.hbm.xml   代码如下:         "-//Hibernate/Hibernate Mapping DTD 2.0//EN"     "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >         name="entity.Customers"     table="customers">          name="id"       type="java.lang.Integer"       column="id"     >                      name="name"       type="java.lang.String"       column="name"       length="15"     />        name="age"       type="int"       column="age"       length="11"     />      引入Hibernate所需的jar包   Hibernate2.jar、hibernate-tools.jar      通过Hibernate API 访问MYSQL数据库   创建业务逻辑类:useHibernate.java   代码如下:   package business;   import entity.Customers;   import net.sf.hibernate.Session;   import net.sf.hibernate.SessionFactory;   import net.sf.hibernate.Transaction;   import net.sf.hibernate.cfg.Configuration;   public class useHibernate {       public static SessionFactory sessionFactory;       /** 初始化Hibernate,创建SessionFactory实例 */       public void saveCustomers(Customers customers) throws Exception {           Configuration config = null;           config = new Configuration().configure();           // 创建一个SessionFactory 实例           sessionFactory = config.buildSessionFactory();           Session session = sessionFactory.openSession();           Transaction tx = null;           try {               /* 开始一个事务 */               tx = session.beginTransaction();               session.save(customers);               /* 提交事务 */               tx.commit();           } catch (Exception e) {               // TODO Auto-generated catch block               if (tx != null)                   tx.rollback();               throw e;           } finally {               session.close();           }       }}      测试Hibernate配置是否成功   创建Junit测试:testhibernate.java   有关Junit请参考相关资料:   package test;   import business.useHibernate;   import entity.Customers;import junit.framework.TestCase;     Customers customers = new Customers();           customers.setId(new Integer(330121));           customers.setAge(24);           customers.setName("huhpreal");           useHibernate usehibernate = new useHibernate();           try {               usehibernate.saveCustomers(customers);           } catch (Exception e) {               // TODO Auto-generated catch block               e.printStackTrace();           }       }}      查看后台打印信息:   (cfg.Environment           403 ) Hibernate 2.0.3   (cfg.Environment           432 ) hibernate.properties not found   (cfg.Environment           452 ) using CGLIB reflection optimizer   (cfg.Environment           462 ) JVM proxy support: true   (cfg.Configuration          703 ) Configuration resource: /hibernate.cfg.xml   (cfg.Configuration          270 ) Mapping resource: hbm/Customers.hbm.xml   (cfg.Binder             178 ) Mapping class: entity.Customers -> customers   (cfg.Configuration          885 ) Configured SessionFactory: null   (cfg.Configuration          492 ) processing one-to-many association mappings   (cfg.Configuration          503 ) processing foreign key constraints   (impl.SessionFactoryImpl       132 ) building session factory   (dialect.Dialect           83 ) Using dialect: net.sf.hibernate.dialect.MySQLDialect   (connection.DriverManagerConnectionProvider 41 ) Hibernate connection pool size: 20   (connection.DriverManagerConnectionProvider 70 ) using driver: org.gjt.mm.mysql.Driver at URL: jdbc:mysql://localhost:3306/netstore   (connection.DriverManagerConnectionProvider 71 ) connection properties: {useUnicode=true, user=root, password=123456, characterEncoding=gb2312}   (impl.SessionFactoryImpl       162 ) Use outer join fetching: false   (impl.SessionFactoryImpl       185 ) Use scrollable result sets: true   (impl.SessionFactoryImpl       186 ) JDBC 2 max batch size: 15   (impl.SessionFactoryImpl       194 ) echoing all SQL to stdout   (impl.SessionFactoryObjectFactory  82 ) no JDNI name configured   (impl.SessionFactoryImpl       269 ) Query language substitutions: {}      Hibernate 配置使用成功      查看数据库:      插入成功!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表