初识Hibernate框架
引、
之前在学校接触了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
关于以上参数,从上往下:
3、TUser.hbm.xml
TUser是其中一个实体类的名字,这里对应了数据库里的user表。对每一个实体类需要创建一个xml配置文件。配置代码示例:
其中对应关系:package-包名。class-类名,table-数据库表名。id-主键,name-类中属性名,column-数据库表列名。identity-主键increment自增。property-属性对应。
配置的属性还有单表映射,一对多
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); Listusers=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框架,还要不断学习!技术的世界很广阔,为了去看看那些技术的秘密,也为了更好的明天,还要不断学习。加油吧,晚安少年。