`

Hibernate笔记

 
阅读更多
 
搭建Hibernate的环境:

       新建一个User Library:Hibernate 3,引入jar文件:

              HIBERNATE_HOME\lib 下的相关的依赖的第三方包

              HIBERNATE_HOME/hibernate3.jar   Hibernate的核心实现

              引入相关的JDBC驱动

       把创建的Hibernate用户库引进项目中

       在项目src目录下创建相关配置文件:

              HIBERNATE_HOME \etc\ hibernate.properties   旧版本的Hibernate实用的核心配置文件,这个文件列举了相关的Hibernate配置,在配置文件时可以参考该文件。

              HIBERNATE_HOME \etc\ hibernate.cfg.xml   如果存在这个文件则会覆盖上面的properties文件

              HIBERNATE_HOME\hibernate-3.2\etc   日志记录文件

       编写hibernate.cfg.xml文件:

       <hibernate-configuration>

    <session-factory>

       <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

       <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test_1</property>

       <property name="hibernate.connection.username">root</property>

       <property name="hibernate.connection.password">abc</property>

       <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

       <property name="hibernate.show_sql">true</property>

       <!--

       <property name="hibernate.format_sql">true</property>

        -->      

       <mapping resource="com/test/User.hbm.xml"/>

    </session-factory>

</hibernate-configuration>





基本的映射实体了的xml格式:

<hibernate-mapping>

    <class name="com.test.User">

       <id name="id">

           <generator class="uuid"/>

       </id>

       <property name="name" column=”user_name”/>

       <property name="password"/>

    </class>

</hibernate-mapping>

创建完映射文件之后,记得把hbm.xml文件添加到hibernate.cfg.xml文件中

    <mapping resource="com/test/User.hbm.xml"/>

       (在session-factory标签里property标签后)



生成第一个数据库和表:

       Configuration cfg = new Configuration().configure();

       SchemaExport export = new SchemaExport(cfg);

       export.create(true, true);

       创建hibernate.cfg.xml文件中指定的test_1数据库,并使用该数据库,然后运行上面的代码





将对象保存到数据库表中:

       Configuration cfg = new Configuration().configure();

        SessionFactory factory = cfg.buildSessionFactory();

       // SessionFactory一个数据库创建一个就可以了,它是线程安全的

       Session session = null;

       try {

           session = factory.openSession();

           session.beginTransaction();

           User user = new User();

           user.setName("张三");

           user.setPassword("123");

           session.save(user);

           session.getTransaction().commit();

       }catch(Exception e) {

           e.printStackTrace();

           session.getTransaction().rollback();

       }finally {

           if (session != null) {

              if (session.isOpen()) {

                  session.close();

              }

           }

       }





持久化对象的三种状态:

Transient,Persist,Detached





get方法查询的使用:

           session.beginTransaction();

           //get加载上来的对象为持久对象

           //执行get会马上发出查询语句

           User user = (User)session.get(User.class, "001");

           System.out.println(user.getName());

           //Persistent状态

           //Persistent状态的对象,当对象的属性发生改变的时候

           //hibernate在清理缓存(脏数据检查)的时候,会和数据库同步,相当于执行了一个flush语句;

           user.setName(”王五");

           session.getTransaction().commit();



           当使用get方法查询数据库中没有的数据时,返回null,所以需要做一下判断,避免出现空指针





Load方法查询的使用:

           session.beginTransaction();

           //不会马上发出查询语句,因为load支持lazy(延迟加载/懒加载)

           //hibernate的lazy采用代理对象实现,代理对象主要采用的是CGLIB库生成

           //生成代理,它采用的是继承方式

           User user = (User)session.load(User.class, "002");

           System.out.println(user.getName());

           user.setName("王五");

           session.getTransaction().commit();



delete方法的使用:

              User user = (User)session.load(User.class, "001");

           //删除,建议采用此种方式删除:先加载再删除

           session.delete(user);

           session.getTransaction().commit();





           //手动构造Detached对象

           User user = new User();

           user.setId("002");

           session.delete(user);

           session.getTransaction().commit();



update方法的使用:

               //手动构造Detached对象,生成的语句问好是随着修改的属性动态改变的

           User user = new User();

           user.setId("001");

           user.setName("张三");

           session.update(user);

           session.getTransaction().commit();





           session.beginTransaction();

           //建议采用此种方式更新,先加载再更新,生成固定的sql语句,不影响效率

           User user = (User)session.load(User.class, "002");

           user.setName("李四");

           //可以显示的update

           session.update(user);

           session.getTransaction().commit();



使用Query接口:

           session.beginTransaction();

           Query query = session.createQuery("from User");     //使用hql语句

           List userList = query.list();

           for (Iterator iter=userList.iterator(); iter.hasNext();) {

              User user = (User)iter.next();

              System.out.println("id=" + user.getId() + ", name=" + user.getName());

           }

           session.getTransaction().commit();




分享到:
评论

相关推荐

    hibernate笔记.txt

    在深入探讨《hibernate笔记.txt》所提及的关键知识点前,我们先来解析一下标题和描述中的核心概念。“自上而下的依赖,单向依赖,层与层之间最好依赖抽象”,这一描述实际上触及了软件架构设计中的关键原则,特别是...

    韩顺平.2011版.hibernate笔记.zip

    《韩顺平.2011版.hibernate笔记》是一份针对Hibernate框架的详细学习资料,由知名IT讲师韩顺平在2011年编撰而成。Hibernate是Java开发领域中广泛使用的对象关系映射(ORM)框架,它极大地简化了数据库操作,使开发者...

    传智播客 hibernate笔记(word+pdf+源码)

    【传智播客 Hibernate 笔记】是一份深入学习 Hibernate ORM 框架的资源集合,包括了 word 笔记、pdf 讲义、源代码以及相关分析图表和 jar 包,旨在帮助开发者全面理解并掌握 Hibernate 的核心概念与实际应用。...

    Hibernate笔记完整版

    《Hibernate笔记完整版》 在Web开发领域,Hibernate作为三大框架之一,扮演着至关重要的角色。本文将全面介绍Hibernate,包括其数据持久化的概念、优缺点对比,以及Hibernate的核心概念和编程步骤。 对象持久化是...

    韩顺平hibernate笔记

    《韩顺平Hibernate笔记》是一份详尽记录了著名IT讲师韩顺平关于Hibernate框架讲解内容的资料集合。Hibernate作为Java领域中广泛使用的对象关系映射(ORM)框架,极大地简化了数据库操作,使得开发者可以更加专注于...

    韩顺平Hibernate笔记

    《韩顺平Hibernate笔记》是一份详尽的关于Hibernate框架的学习资料,由知名IT教育专家韩顺平编撰。Hibernate是Java开发中的一个强大的对象关系映射(ORM)框架,它简化了数据库与Java对象之间的交互,使得开发者可以...

    hibernate笔记

    本笔记将深入探讨 Hibernate 的核心概念、配置、实体映射、查询语言及缓存机制。 1. **核心概念** - **对象关系映射(ORM)**: Hibernate 提供了一种桥梁,将 Java 对象与数据库中的记录关联起来,使得开发者可以...

    Hibernate,hibernate笔记

    Hibernate 是一个开源的对象关系映射(ORM)框架,它允许Java开发者使用面向对象的方式来操作数据库。这个框架将数据库操作转化为对Java对象的操作,简化了数据持久化的复杂度。以下是对Hibernate的一些关键知识点的...

    尚学堂hibernate笔记

    ### 尚学堂Hibernate笔记知识点详解 #### 一、项目初始化与环境搭建 1. **新建项目**:在IDE中创建一个新的Java项目。 2. **构建用户库并添加所需的JAR包**: - 右键点击项目 -&gt; `Build Path` -&gt; `Configure ...

    hibernate笔记.pdf

    hibernate笔记.pdf

    韩顺平hibernate笔记及图解

    总结起来,"韩顺平hibernate笔记及图解"涵盖了Hibernate的基础概念、核心组件、对象关系映射、查询机制、事务管理以及实体间的关系等内容。通过学习这份笔记,开发者能深入理解Hibernate的工作原理和使用技巧,提升...

    Spring+Hibernate笔记

    【Spring+Hibernate笔记】这篇文档主要涵盖了在Web开发中使用Spring和Hibernate的基础知识。首先,我们从Spring的Hello World开始,了解如何配置JSP运行环境。 1.1. 配置JSP运行环境是开发Web应用的第一步。这包括...

    马士兵hibernate笔记

    【马士兵Hibernate笔记】是一份面向初学者的教程,旨在帮助读者深入了解Hibernate这一持久化框架。Hibernate是一个基于Java的ORM(对象关系映射)工具,它允许开发者将数据库操作转换为面向对象的方式,从而简化了...

Global site tag (gtag.js) - Google Analytics