初识Hibernate框架
admin
2023-06-08 03:41:45
0

引、

    之前在学校接触了Java的hibernate框架,觉得很强大。放假了,有时间好好看一看hibernate的相关技术。最近在imooc上看了相关的视频,写一篇博客总结一下。



一、了解:

    Hibernate是一个ORM(Object Relational Mapping,对象关系映射)框架,对JDBC进行了轻量级的封装。使得程序员可以用面向对象的方法来进行数据库编程,使我们更容易用Java对数据库进行各种操作,完成数据持久化(我觉得就是实时同步)的任务。



二、配置

    知道了Hibernate是什么,有什么用之后,我们来着手尝试一下。但是首先,要配置。


    我用的是Eclipse,在Java web工程下:

    1、jar包

将hibernate所需的jar包都拷贝到WEB-INF\lib目录下,然后build path添加到配置文件中。所需的包可以在其官网下载,然后还要添加所要用jdbc的jar包。


    2、hibernate.cfg.xml配置

    在src目录下创建hibernate.cfg.xml,也就是config文件。

    贴一段配置代码示例:


  
          
  
      
        true  
        org.hibernate.dialect.MySQLDialect  
        com.mysql.jdbc.Driver  
        jdbc:mysql://localhost:3306/lesson?useUnicode=true&characterEncoding=utf8  
        root  
        root  
        update
        
        
    

    关于以上参数,从上往下:

        控制台打印sql语句,使用mysql方言,使用mysql数据库,数据库连接,用户名root,密码root,操作表的方式

        里是两个实体类,对应数据库中的两张表。(实体类直接对应数据库中的表)


    3、TUser.hbm.xml

    TUser是其中一个实体类的名字,这里对应了数据库里的user表。对每一个实体类需要创建一个xml配置文件。配置代码示例:




	
		
			
		
		
		
	 

    其中对应关系:package-包名。class-类名,table-数据库表名。id-主键,name-类中属性名,column-数据库表列名。identity-主键increment自增。property-属性对应。


    配置的属性还有单表映射,一对多,多对一的表映射,如果进行过了双向配置,可以使用inverse关键字来实现控制。添加表的映射之后使得数据表之间关系更易于管理,就是数据库中添加外键一样,还可以用cascade等参数使其更加方便。

    

    4、添加工具类HibernateUtil.java

    在util包下新建HibernateUtil类。不多说,上代码:

package com.ouc.util;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

public class HibernateUtil {
	
public static SessionFactory sessionFactory;

	public HibernateUtil() 
	{
		
	}

	static {
		try {
			/** 此方法在Hibernate4中被标记为过时 */
			// sessionFactory = new
			// Configuration().configure().buildSessionFactory();

			/** Hibernate4取得SessionFactory的方法 */
			Configuration cfg = new Configuration().configure();  //创建配置对象
			ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()  
					.applySettings(cfg.getProperties()).buildServiceRegistry(); //创建服务注册对象
			sessionFactory = cfg.buildSessionFactory(serviceRegistry);  //创建会话工厂
		} catch (Throwable e) {
			throw new ExceptionInInitializerError(e);
		}
	}
	
	public static SessionFactory getSessionFactory() {
		return sessionFactory;
	}
	
}

    我们通过sessionFactory就拿到session,然后可以进行各种操作了。


三、使用:

    Hibernate中使用HQL(Hibernate Query Language)进行查询,数据库中使用的SQL(Structured Query Language,结构化查询语言)进行查询,两者的语法几乎是一样的。


    写个Test测试一下,代码:

package com.ouc.util;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import com.ouc.domains.TUser;

public class TestUtil {
	public static void main(String[] args) {
		Session session = HibernateUtil.sessionFactory.openSession();
		String hql=" from TUser";
		Query query= session.createQuery(hql);
		List users=query.list();
		for(TUser u:users){
			System.out.println(u.getId()+","+u.getUsername()+","+u.getPassword());
		}
	}
}

    上面要注意一个问题,debug了半天- - 太粗心了,用了hibernate就是面向对象编程了,所以在查找表的时候不是from tableName,而是要写from className。

    比如上面的hql用的from TUser,一开始写了from t_user就报错,提示没有映射。发现配置文件并没有问题,才想到这里写错了。


    看看结果,数据库中的数据:

    

初识Hibernate框架

    控制台输出结果:

初识Hibernate框架

    可以,很正确。


五、总结

    经过这一小段时间的视频学习,虽然学得不多也不深入,不过这样也算是初步认识了Hibernate框架,还要不断学习!技术的世界很广阔,为了去看看那些技术的秘密,也为了更好的明天,还要不断学习。加油吧,晚安少年。


相关内容

热门资讯

山西矿难,一场早有预兆的祸事 文丨李一鸣 姜鸥桐 编辑丨卢伊“矿难”“瓦斯爆炸”,这是很多年没有出现在我们视野中的语汇,但它就是这...
朱杨柱、张志远、黎家盈,领命出... ‍‍央视新闻消息,5月24日,神舟二十三号载人飞行任务航天员乘组出征仪式在酒泉卫星发射中心问天阁圆梦...
女子在车厢内大声唱歌、举止怪异... 极目新闻记者 李淑仪5月23日,有网友发视频称,自己乘坐由呼和浩特铁路局承运的K886/K887次列...
天玑7020等于骁龙多少(天玑... 天玑720相当于高通骁龙765G。天玑720采用了台积电7nm制程工艺,EUV是采用波长15nm的极...
坐便器水箱一直流水怎么办 坐便器水箱一直流水可能是由以下原因导致的:1. 水箱配件老化或损坏:水箱内的配件,如浮球、排水阀等,...
安装墙面收纳柜的好处及注意事项 安装墙面收纳柜可以提供合理的收纳空间,色彩和设计上要简洁明快,注意大小和线路布局,选择适合的颜色和灯...
安装中央空调的注意事项 中央空调是现代家庭的常见设备之一,安装中央空调需要注意以下事项: 1.选择合适的品牌和型号 选择...
led灯不亮了但有弱光怎么办 LED灯在使用过程中,容易出现各种故障,比如灯不亮了,但是有弱光,这怎么处理好?小编带大家一起了解下...
轰动性突破!美国终被伊朗逼怂 伊朗局势看来出现了真正的进展,在多方传出美伊谈判立场相互接近后,特朗普北京时间周日凌晨发帖表示,美国...
男子踩中蛇窝,至少被3条毒蛇咬... 5月22日,云南保山市人民医院血液科蛇伤救治中心病房外,26岁的阿杰(化名)在哥嫂的搀扶下,缓缓走出...