<%@ page contentType="text/html; charset=gb2312"%> 谈谈简单Hibernate入门
网站公告:   ◆北天JAVA技术网热情为java爱好者服务,本网内容包括JAVA(JSP、servlet、EJB、webservice、j2ee、javabean、应用服务器、JavaScript),数据库(MYSQL、SQL Server、Sybase、Oracle、DB2、数据库综合知识),设计研究(设计模式、Struts、Spring、Hibernate、设计框架、设计综合知识),WEB2.0新技术(主要介绍AJAX),以及各种技术的入门、实例、例子等等,欢迎各位多来坐坐!◆  诚邀各位JAVA爱好者加盟!◆  本网站内容丰富,更新快,保证每周20篇以上!  
加入收藏
设为首页
联系站长
承接项目
  相关资源:网站首页 | 免费培训学院 | 技术论坛 | JAVA聊天室 | 作家专栏 | 开发工具 | 认证考试 | 会员俱乐部
  JAVA技术初学者园地 | jsp与servlet | javascript | Java源代码 | EJB | web service | 应用服务器 | JAVA综合知识
  设计研究设计模式 | 设计框架 | Struts | Spring | Hibernate | 开源项目 | 面向对象设计 | 设计综合知识
  数 据 库MYSQL | SQL Server | Sybase | Oracle | DB2 | Informix | Access | 数据库综合知识
  其他资源:AJAX新技术 | 网站开发 | ERP软件 | OA办公软件 | 商业智能BI | 开发综合知识 | 承接项目 | 项目试用

 
 
谈谈简单Hibernate入门
     发布者: 发布时间:2008-03-28
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 配置使用成功



查看数据库:



插入成功! 

TAG:
Hibernate



(转载文章请保留出处:北天JAVA技术网(www.java114.com))
 
更多精彩文章:
介绍JSP中表单数据存储应用的一种通用方法
Java Persistence with Hibernate中文版Hibernate实战第2版出版
Java Persistence with Hibernate中文版Hibernate实战第2版出版
如何完整测试你的网站
如何完整测试你的网站
Windows Mobile 6.1将于愚人节正式发布
 
最近评论:
        
鍥炲
        
鍥炲
        
标 题:   
内 容:   
 
                                  
 
免责声明:该文章由网友发表,如果对您造成侵权,请联系站长

首页 - 承接项目 - 网站地图 - 联系我们 -
版权所有北天JAVA技术工作室 ICP证号:粤ICP备06079815号