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

善良的秦易轩

善良的秦易轩

2016-02-19 20:24

下面图老师小编跟大家分享Java基础知识:谈谈简单Hibernate入门,一起来学习下过程究竟如何进行吧!喜欢就赶紧收藏起来哦~
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 配置使用成功
  
  查看数据库:
  
  插入成功!
展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
Java基础知识:谈谈简单Hibernate入门

java基础知识——java入门与加深一

编程语言 网络编程
java基础知识——java入门与加深一

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

java基础知识——java入门与加深二

编程语言 网络编程
java基础知识——java入门与加深二

Java基础知识——JNI入门介绍(下)

编程语言 网络编程
Java基础知识——JNI入门介绍(下)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Java基础知识——JNI入门介绍(上)

编程语言 网络编程
Java基础知识——JNI入门介绍(上)

股票入门基础知识

股票
股票入门基础知识

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

C++学习:在C++中创建持久对象

C++学习:在C++中创建持久对象

vbs开机自动启动同步系统时间

vbs开机自动启动同步系统时间
下拉加载更多内容 ↓