初识--hibernate

前几天刚刚学了hibernate 结合其他的知识 大致有了一个初步的了解.

一:什么是hibernate?

 hibernate是一个轻量级JavaEE应用的持久层框架,是一个完全的ORM框架。

什么叫持久化?  你存的数据是存在数据库里,而数据库是存在硬盘(电脑磁盘),它能够在你电脑的磁盘上保存很长一段时间.

什么叫持久层? 就是进行数据库操作或者跟数据库打交道的那一层就是就持久层,比如我们的三层架构,也有专门和数据库打交道的一层,那就叫持久层啦.

我们去配置xxx.hbm.xml:目的就是为了hibernate与我们的application相关联

我们去配置hibernate.cfg.xml:与数据库相关的服务,例如:用户名和密码等。还有自身hibernate的服务。

 

二、hibernate有什么作用?

1、通过hibernate,完成POJO类到数据库表的映射关系

2、通过hibernate,只需要操作对象,hibernate就帮我们生成数据库语句去操作数据库,我们不必管下面的语句是怎么样的。

3、大概就是上面说的这两个,就是让用户来对对象的增加、删除、修改操作,来达到对数据库表中数据的这种增删改的操作。

 

三、使用hibernate需要导的jar包和jar包的意思?

通过xxx.hbm.xml配置文件来反应pojo类和数据库表的映射关系。

 

主键生成策略:

1、increment:主键自动增长、由hibernate来管理

  注意:如果数据库也设置了自动增长,就会发生主键冲突问题

  2、identity:由底层数据库来管理生成,不由hibernate管理

   也就是说底层数据库怎么设置的主键就怎么来

   注意:mysql、sql server可以,oracle不可以

 3、sequence:标识符生成器,就是底层数据库来管理生成,利用底层数据库提供的序列来生成标识符,不由hibernate管理

   注意:mysql不支持序列  oracle支持

 4、native:由底层数据库自己来决定使用什么策略,hibernate不管

   注意:mysql自动选择identity、oracle自动选择sequence

 5、uuid:随机生成32位不相同的字符串。

     主键分自然主键和代理主键

       1自然主键:也就是在业务中有具体意义的主键,

       2代理主键,就是上面我们说的那5种,没有任何意义,只是标识主键是唯一的。

       

四、hibernate的配置,hibernate.cfg.xml

  有了xxx.hbm.xml这个映射文件还不够,因为hibernate需要连接数据库,那么这些操作放哪里呢,就提取出一个公用的配置文件出来,hibernate.cfg.xml就是这种公共的配置文件,加载数据库连接的信息,和将各种映射文件加载进来,其实就是抽取出来的,因为有很多映射文件,每个映射文件都需要连接数据库等操作,那么久将共同的操作提取出来形成了hibernate.cfg.xml。

 

有了xxx.hbm.xml和hibernate.cfg.xml后,就能使用hibernate的功能了。

package com.zking.action;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.zking.entity.Mytest;

public class MytestAction {
    private Configuration con=null;
    private SessionFactory sf=null;
    private Session session=null;
    private Transaction ta=null;
	
	
	@Before
	public void before() {
		//加载classpath下的hibernate.cfg.xml文件
		con=new Configuration().configure();
		//连接会话的工厂
		sf=con.buildSessionFactory();
		//创建session
		session=sf.openSession();
		//开启事务进行提交
		ta=session.beginTransaction();
		
	}
	
	
	
	@After
	public void after() {
		//关闭事务
		ta.commit();
		//关闭session
		session.close();
		//关闭工厂
		sf.close(); 
	}
	
	
	@Test
	public void mytestgenerator() {
		//实例化对象
		Mytest t=new Mytest();
		t.setTname("李四");
		//保存增加的对象
		session.save(t);
		
	}
	
	
	
	
	
}

 以上就是我对hibernate的一个初步认识.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值