hibernate入门知识-01

1.Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装

2.是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

3.起源:2001年,澳大利亚墨尔本一位名为Gavin King的27岁的程序员,上街买了一本SQL编程的书,他厌倦了实体bean,认为自己可以开发出一个符合对象关系映射理论,并且真正好用的Java持久化层框架,因此他需要先学习一下SQL。这一年的11月,Hibernate的第一个版本发布了。

3.hibernate是完全的orm框架的一种(使用hql)...

4.创建maven工程,添加需要的依赖,在maven工程的pom.xml中添加两个依赖

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.11.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>4.3.11.Final</version>
</dependency>

5.在src/main/java下创建:hibernate.cfg.xml主配置文件配置如下

  

<session-factory>

  <!--配置数据库相关参数-->
  <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  <property name="hibernate.connection.url">jdbc:mysql:///hibernate?characterEncoding=UTF-8</property>
  <property name="hibernate.connection.username">root</property>
  <property name="hibernate.connection.password">ou134568</property>

  <!-- 方言选择,根据不同的数据库 -->
  <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
  <property name="show_sql">true</property><!-- 打印sql语句 -->

  <!-- 加入映射文件,javabean的映射配置文件 -->
  <!-- <mapping resource="po/User.hbm.xml"></mapping> -->
  <mapping resource="onetomany/Clazz.hbm.xml"></mapping>
  <mapping resource="onetomany/Students.hbm.xml"></mapping>
</session-factory>

6.在测试类中,首先读取主配置文件/生成服务注册器/生成sessionfactory

  我们可以写成一个工具类,这样我们只要调用openSession()就可以了...

  org.hibernate.Session本质上是对java.sql.Connection的封装

  

  public class DBUtils {
     private static Configuration CGF;
     private static SessionFactory FACTORY;
      static{
      //读取主配置hibernate.cfg.xml文件
      CGF = new Configuration().configure();
      //生成服务注册器
      ServiceRegistry sr = new StandardServiceRegistryBuilder()
      .applySettings(CGF.getProperties()).build();
      //由服务注册器来生成sessionfactory
      FACTORY = CGF.buildSessionFactory(sr);
      }

      public static Session openSession(){
      return FACTORY.openSession();
      }
      }

7.测试方法--根据主配置文件和映射文件生成对应的表,把所有的有映射配置文件的实体类生成对应的表,如果已经存在则不生成

    public void test01(){

    //读取hibernate.cfg.xml配置文件
    Configuration cfg = new Configuration().configure();
    //根据主配置文件--映射文件生成对应的表
    SchemaExport export = new SchemaExport(cfg);
    //生成表
    export.create(true,true);

     }

8.测试方法,将一个对象持久化(存入数据库)

    public void test02(){

    Session session = DBUtils.openSession();

    session.beginTransaction();
    Clazz clazz = new Clazz();
    clazz.setClazzName("一年级");

    Students student01=new Students();
    student01.setStudentName("王五");
    student01.setClazz(clazz);

    Students student02=new Students();
    student01.setStudentName("张三");
    student01.setClazz(clazz);
    

    //保存,要先保存clazz.否则会异常

    session.save(clazz);
    session.save(student01);
    session.save(student02);
    

    //提交事务并关闭session
    session.getTransaction().commit();
    session.close();

    }

时间: 2024-11-08 20:12:33

hibernate入门知识-01的相关文章

hibernate入门知识

课程内容 1        HelloWorld a)   Xml b)   annotation 2        Hibernate原理模拟 - 什么是O/R Mapping以及为什么要有O/R Mapping 3        常见的0/R框架(了解) 4        hibernate基础配置(重点) 5        ID生成策略(重点 AUTO) 6        Hibernate核心开发接口介绍(重点) 7        对象的三种状态(了解) 8        关系映射(重点

(01)Hibernate入门

1.Hibernate在SSH中的地位 SSH 序号 技术 作用 1 Struts 基于mvc模式的应用层框架技术! 2 Spring 创建对象.处理对象的依赖关系以及框架整合! 3 Hibernate 基于持久层的框架(数据访问层使用)! 2.DAO层的代码是如何编写的? (1)操作XML数据 (2)使用Jdbc技术 a)原始的jdbc操作, Connection/Statement/ResultSet b)自定义一个持久层框架, 封装了dao的通用方法 c)DbUtils组件, 轻量级的da

【Zigbee技术入门教程-01】Zigbee无线组网技术入门的学习路线

[Zigbee技术入门教程-01]Zigbee无线组网技术入门的学习路线 广东职业技术学院  欧浩源 一.引言    在物联网技术应用的知识体系中,Zigbee无线组网技术是非常重要的一环,也是大家感觉比较难以掌握的一个部分.Zigbee无线组网技术之所以让你感有学习难度,不是因为它真的复杂,而是它看起来很复杂,让人望而止步.另一方面则是Zigbee技术在应用层面上将硬件和软件完成融为一个体系,要求开发人员既要有扎实的硬件技术,又要有清晰的软件思维.    目前,尽管有不少关于Zigbee无线组

Angular系列----AngularJS入门教程01:AngularJS模板 (转载)

是时候给这些网页来点动态特性了——用AngularJS!我们这里为后面要加入的控制器添加了一个测试. 一个应用的代码架构有很多种.对于AngularJS应用,我们鼓励使用模型-视图-控制器(MVC)模式解耦代码和分离关注点.考虑到这一点,我们用AngularJS来为我们的应用添加一些模型.视图和控制器. 请重置工作目录: git checkout -f step-2 我们的应用现在有了一个包含三部手机的列表. 步骤1和步骤2之间最重要的不同在下面列出.,你可以到GitHub去看完整的差别. 视图

Hibernate入门教程

上一章我们学了一下Hibernate的配置和单张表的操作,这一章说一下Hibernate中一对一的配置 Hibernate入门教程 第二章 Hibernate的一对一单边双边配置.以及增删改查 预备知识: 1.fetch ,可以设置fetch = "select" 和 fetch = "join" fetch ="select"是在查询的时候先查询出一端的实体,然后在根据一端的查询出多端的实体,会产生1+n条sql语句; fetch = &quo

Hibernate入门案例

1.Hibernate框架简述 Hibernate的核心组件在基于MVC设计模式的JAVA WEB应用中,Hibernate可以作为模型层/数据访问层.它通过配置文件(hibernate.properties或hibernate.cfg.xml)和映射文件(***.hbm.xml)把JAVA对象或PO(Persistent Object,持久化对象)映射到数据库中的数据库,然后通过操作PO,对数据表中的数据进行增,删,改,查等操作.除配置文件,映射文件和持久化类外,Hibernate的核心组件包

Hibernate 入门 04 - Hibernate中Java对象的三种状态

目录:(后续不断更新...) Hibernate 入门 01 - 框架技术 (介绍Hibernate框架的发展由来) Hibernate 入门 02 - Hibernate介绍及其环境搭建 Hibernate 入门 03 - 使用Hibernate完成持久化操作 Hibernate 入门 04 - Hibernate中Java对象的三种状态 ▁▃▅ Hibernate中Java对象的三种状态▅▃▁ 1. Java对象的三种状态 当应用通过调用Hibernate API与框架发生交互时,需要从持久

MongoDB基础知识 01

MongoDB基础知识  1. 文档  文档是MongoDB中的数据的基本单元,类似于关系型数据库管理系统的行. 文档是键值对的一个有序集.通常包含一个或者多个键值对. 例如: {”greeting" : "Hello, world!", "foo", 3} 2. 集合(collection) 集合就是一组文档,类似关系型数据库中的一张表. 3. 数据库(database) 多个文档组成集合,多个集合组成数据库.一个MongoDB实例可以承载多个数据库.

Python基础入门知识

Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语句 表达式for 循环 break and continue 表达式while 循环 一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. 最新