Hibernate框架中的HibernateUtil

对于刚学习三层框架的人来说,每一个配置文件和每一个类,以及功能来说都很新鲜,时常就忘记了相关类的功能。

在这里建议编程就是要多加练习,才能熟能生巧。

这里说一下HibernateUtil类,在使用Hibernate的前提是需要去下载Hibernate项目,然后在lib文件夹下面把所有的. jar 包

COPY到你项目的lib文件夹下。

什么是HibernateUtil类,或者是说有什么功能?

Hibernate框架,主要解决的就是项目于数据库连接相关的问题,然而主要实现是需要靠配置文件中的代码与

类进行映射,才可以实现具体的功能。

那么HibernateUtil就是把代码读取配置文件的功能提取出来,因为每次读取操作都很费时,这样一次就可以读取完毕。

属于把一种功能抽象出来。这些代码是非常耗时的,我们希望它只做一次,一般我们希望它只做一次,我们去做一个工具类去初始化

hibernate。工具类一般不希望被继承,别人来改写我的东西,一般用finally

<span style="font-size:18px;"> //加载配置文件信息默认为hiberna.cfg.xml,如果不是的话那么就在config()方法里面去解析他
     Configuration config = new Configuration();
     config.config();
     //创建工厂
     SessionFactory factory = config.bulidSessionFactory();
     //得到session
     Sesssion session  = factory.opensession();
     //创建对象

     public finally HibernateUtil(){
       private static SessionFactory sessionFactory=null;
       //私有的构造方法,防止别人new出来,典型的单例设计模式的引用
        priavate HibernateUtil(){
            }
        static {
  Configuration cfg = new Configuration();
  cfg.configure();
  sessionFactory = cfg.buildSessionFactory();
 }
    public static SessionFactory getSessionFactory() {
      return sessionFactory;
 }

 public static Session getSession(){
  return  sessionFactory.openSession();
   }

   cfg.configure()这句话就会去读hibernate.cfg.xml里面的配置文件.如果你的配置文件不叫

hibernate,cfg.xml,你就要用cfg.configure("filename")来指定你需要的配置文件。我们可以查看源代码。在

使用cfg.configure()时:
 public Configuration configure() throws HibernateException {
  configure( "/hibernate.cfg.xml" );
  return this;
 }

会把hibernate.cfg.xml传进去,eclipse会在哪里去找这个hibernate.cfg.xml这个文件呢?会在classpath中去

找这个文件。src这个目录不是classpath,但是它为什么可以找的到呢?因为scr目录最终都会编译到

classpath中去。session就类似与jdbc的connection.

     ibernate 中先对来说比较规范的一个添加一个对象的写法
 static void addPerson(Person person) {
  Session session = null;
  Transaction tx = null;
  try {
   session = HibernateUtil.getSession();
   tx = session.beginTransaction();
   session.save(person);

  } catch (HibernateException e) {
   if (tx != null)
    tx.rollback();
   throw e;  //这个时候最好是把异常抛出去,因为如果只是回滚的话,就没有任何提示给调用者。
  } finally {
   session.close();
  }
}</span>
时间: 2024-12-15 21:15:48

Hibernate框架中的HibernateUtil的相关文章

Hibernate框架中的HQL注入漏洞

 Hibernate是一种ORMapping框架,内部可以使用原生SQL还有HQL语言进行SQL操作. 所谓的HQL注入,就是指在Hibernate中没有对数据进行有效的验证导致恶意数据进入应用程序中造成的. 请看这段代码: Input参数即可造成注入. 不过在Hibernate中,一般都是在createQuery中使用PDO,使用setString填充占位符进行sql语句的拼接,如果是这样的话,自然就不存在SQL注入,但是不排除有人像上面的图片中的写法. 正常情况下: Sqlin参数存在注

在hibernate框架中配置显示sql语句

使用Hibernate的框架开发时,可在Hibernate.cfg.xml中加上 <property name="hibernate.show_sql">true</property><!-- 配置显示sql语句 -->  <property name="format_sql">true</property><!-- 让输出的sql语句格式化 --> 就可以在控制台显示对应的sql语句了,对于开

在Hibernate框架中详谈一级缓存

在学习Hibernate的过程中我们肯定会碰上一个名词---缓存,一直都听说缓存机制是Hibernate中的一个难点,它分为好几种,有一级缓存,二级缓存和查询缓存 今天呢,我就跟大家分享分享我所理解的一级缓存 要想完美的体现出缓存机制的话,我想通过查询语句生成的sql应该就能够很清楚的看到 那些Hibernate的配置信息我就不展示了,直接看关键代码 场景:我要查询同一个对象,查询两次,观察在不同的情况下,sql语句的生成情况 我事先准备了一个HibernateUtil工具类,具体如下 pack

Hibernate框架中Criteria语句

在Hibernate中有一种查询语句是Criteria查询(QBC查询),今天呢 我们就一个个的详细的跟大家一起探讨Criteria语句的相关知识点 案例前的准备 //插入测试数据,构建数据库 public static void insertInfo(){ //获取Session Session session=HibernateUtil.currentSession(); //开启事务 Transaction tx = session.beginTransaction(); //构建班级 G

Hibernate框架中,使用JDBC语法

/** * 调用存储过程 * * @param PRONAME * @return */ public CallableStatement citePro(final String PRONAME){ Session session = getCurrentSession(); CallableStatement pro = session.doReturningWork(new ReturningWork<CallableStatement>() { @Override public Cal

【Hibernate】hibernate框架的搭建

1, Hibernate 是什么 Hibernate框架简化了java应用程序与数据库交互的开发. Hibernate是一个开源,轻量级的ORM(对象关系映射)工具. 2,Hibernate框架的优点 Hibernate框架有很多优点.它们分别如下: 开源和轻量级: Hibernate框架是根据LGPL许可证和轻量级的开源工具. 快速性能: Hibernate框架的性能很快,因为缓存在Hibernate框架内部使用. hibernate框架中有两种类型的缓存:一级缓存和二级缓存.一级缓存默认是启

Hibernate框架第二天

### Hibernate的持久化类 ### ---------- **什么是持久化类** 1. 持久化类:就是一个Java类(咱们编写的JavaBean),这个Java类与表建立了映射关系就可以成为是持久化类. * 持久化类 = JavaBean + xxx.hbm.xml ---------- **持久化类的编写规则** 1. 提供一个无参数 public访问控制符的构造器 -- 底层需要进行反射. 2. 提供一个标识属性,映射数据表主键字段 -- 唯一标识OID.数据库中通过主键.Java

如何在spring框架中解决多数据源的问题

在我们的项目中遇到这样一个问题:我们的项目需要连接多个数据库,而且不同的客户在每次访问中根据需要会去访问不同的数据库.我们以往在spring和hibernate框架中总是配置一个数据源,因而sessionFactory的dataSource属性总是指向这个数据源并且恒定不变,所有DAO在使用sessionFactory的时候都是通过这个数据源访问数据库.但是现在,由于项目的需要,我们的DAO在访问sessionFactory的时候都不得不在多个数据源中不断切换,问题就出现了:如何让session

Hibernate框架(二)POJO对象的操作

POJO对象其实就是我们的实体,这篇博客总结一下框架对POJO对象对应数据库主键的生成策略,和一些对POJO对象的简单增删改查的操作. 一,Hibernate框架中主键的生成策略有三种方式: 1,数据库负责生成主键(代理主键) a,native:表示由设置的方言决定采用什么数据库生成主键方式,例如:在MySQL中会采用自增长的方式,主键字段必须都是整形类型:在Oracle数据库中,会采用序列的增长方式. b,sequence:表示采用数据库的序列生成主键,适用于Oracle,DB2数据库中. c