Hibernate-ORM框架基础

2017-03-03  本文已影响773人  liangxifeng833

对象保存在内存中,内存不能永久保存数据,如果要永久保存就需要对象持久化(将对象存储到数据库中).
关系型数据库存放关系型数据,它是非面向对象的,对象和关系数据都是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据.
内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联,继承关系等
因此,把对象持久化到关系数据库中,需要进行对象-关系的映射(Object Relation Mapping)即ORM

持久化为什么不使用JDBC?

hibernate API分类

hibernate核心接口

Paste_Image.png

事务处理接口

当程序通过Hibernate来加载,保存,更新,删除对象时,会触发Hibernate拦截器以及事件监听器做处理;

映射类型接口

org.hibernate.type.Type接口表示将域对象数据类型映射为数据库的关系数据,Hiberate为Type实现了各种实现类,比如:InterType, FloatType等

可扩展的接口

Paste_Image.png

一.hibernate功能

二.开发工具介绍以及安装

开发工具:Eclipse Standarg Kepler
Hibernate Tools for Eclipse Plugins
Hibernate Tools是JBoss公司推出的一个Eclipse综合开发工具插件,该插件可以简化ORM框架Hibernage, 以及JBoss Seam, EJB3等的开发工作,所以在Eclipse中安装Hibernate Tools之前要先确认Eclipse版本,在找对应的Hibernate Tools版本,我的eclipse版本是Eclipse Mars 4.5.2,以下是具体Hibernage Tools安装步骤,
参考文章

三.开发前准备

四.创建第一个Hibernate

package firstTest;
import java.util.Date;
import javax.print.attribute.standard.MediaPrintableArea;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import entity.Students;

/**
 * 测试类
 * @author lxf
 *
 */

public class StudentsTest {
    private SessionFactory sessionFactory;
    private Session session;
    private Transaction transaction;
    @Before
    //初始化配置
    public void init()
    {
        /*
         * 注意:我的hibernate是5.0和慕课网上讲的Hibernate4.2.4(就是4.0)两个版本的配置方法不一样
         */     
        //创建服务注册对象
        //如果.cfg.xml取了其他的名字,要改为.configure("名字.cfg.xml")
        StandardServiceRegistry registry = new StandardServiceRegistryBuilder().configure().build();
        //创建会话工厂对象
         sessionFactory = new MetadataSources(registry).buildMetadata().buildSessionFactory();       
         //创建会话对象
         session = sessionFactory.openSession();
        //开启事务
         transaction = session.beginTransaction();      
    }
    
    @Test
    //真实的单元测试
    public void testSaveStudent()
    {
        Students st = new Students(1,"张三丰", "nan", new Date(), "wds");
        //保存对象进入数据库
        session.save(st);   
    }
    
    @After
    //释放资源
    public void destroy()
    {
        //提交事务
        transaction.commit();
        //关闭会话
        session.close();
        //关闭会话工厂
        sessionFactory.close(); 
    }
}

在StudentsTest.java右键Run as -> Junit Test执行,程序执行testSaveStudent罗辑,判断数据库hibernate中是否有students表,如果有则删除,没有则创建,然后将new Students(1,"张三丰", "nan", new Date(), "wds");对象属性insert到数据库的字段中;

五.Hibernate常用配置

    @Test
    //真实的单元测试
    public void testSaveStudent()
    {
        Students st = new Students(1,"张三丰", "nan", new Date(), "wds");
        session.doWork(new Work(){
            @Override
            public void execute(Connection connection) throws SQLException {
                // TODO Auto-generated method stub
                //开启关系型数据库的自动提交
                connection.setAutoCommit(true);
            }   
        });
        //保存对象进入数据库
        session.save(st);   
        session.flush();
    }
上一篇下一篇

猜你喜欢

热点阅读