Hibernate学习(1)

第2章 Hibernate入门

Hibernate是Java应用和关系数据库之间的桥梁,负责java对象和关系数据库之间的映射。Hibernate内部封装了通过JDBC访问数据库的操作,向上层应用提供了面向对象的数据访问API。在JAVA应用中使用Hibernate包含以下步骤:

步骤:

(1)创建Hibernate的配置文件

(2)创建持久化类

(3)创建对象-关系映射文件

(4)通过Hibernate API编写访问数据库的代码

简单的例子helloapp,演示如何运用Hibernate来访问关系数据库。应用的功能:通过Hibernate保存、更新、删除、加载及查询Customer对象。图2-1展示了Hibernate在helloapp应用中所处的位置。

2.1创建Hibernate的配置文件

Hibernate从配置文件中读取和数据库连接有关的信息。有两种形式,一种是XML格式的文件;还有一种是Java属性文件,采用“键=值”的形式。

hibernate.dialect属性用于指定被访问数据库使用的SQL方言。

2.2 创建持久化类

持久化类是指实例需要被Hibernate持久化到数据库中的类。持久化类通常是域模型(?)中的实体域类。持久化类符合JavaBean的规范,包含一些属性,以及与之对应的getXXX()和setXXX()方法。例如2-2定义了一个名为Customer的持久化类。

Customer持久化类有一个id属性,用来唯一标识Customer类的每个对象,在面向对象术语中,这个id属性被称为对象标识符,通常它用整数来表示,当然也可以设置为其他类型。如果customerA.getId.equals(customerB.getId())的结果是true,就表示customerA和customerB对象指的是用一个客户,它们和CUSTOMER表中的同一条记录对应。

Hibernate要求持久化类提供一个不带参数的默认构造方法,在程序运行时,Hibernate运用java反射机制,调用java.lang.reflect.Constructor.newInstance()方法来构造持久化类的实例。要求持久化类的默认构造方法的访问级别必须是public或protected类型。

2.3 创建数据库 Schema

在本例中,与Customer类对应的数据库表名为CUSTOMERS,CUSTOMERS表有一个ID字段,是表的主键,与customer类的id属性对应。

2.4 创建对象-关系映射文件

Hibernate采用XML格式的文件来指定对象和关系数据之间的映射,在运行时,Hibernate将根据这个映射文件来生成各种SQL语句。本例中,将创建一个名为Customer.hbm,xml的文件,它用于将Customer类映射到CUSTOMERS表,这个文件和Customer.class文件存放在同一个目录下。例程2-3 为Customer.hbm.xml文件的代码。

不考虑这种映射方法。

2.5  通过Hibernate API操纵数据库

Hibernate对JDBC进行了封装,提供了更加面向对象的API。图2-4和图2-5对比了直接通过JDBC API及通过Hibernate API来访问数据库的两种方式。

2.5.2 访问Hibernate的Session接口

初始化过程结束后,就可以调用SessionFactory实例的openSession()方法来获得Session实例,然后通过它来访问数据库的操作。Session接口提供了操纵数据库的各种方法,如:

时间: 2024-10-11 07:59:42

Hibernate学习(1)的相关文章

Hibernate学习一:Hibernate注解CascadeType

http://zy19982004.iteye.com/blog/1721846 ———————————————————————————————————————————————————————— Hibernate学习一:Hibernate注解CascadeType 博客分类: Hibernate hibernate 一.概念 现有一场景:一个管理员可以管理多个网吧,一个网吧可以被多个管理员管理.从中抽象出一个多对多的例子user-bar. 主控方user:多对多里面里面会有第三张表user_b

《Hibernate学习笔记十一》:树状结构设计

<Hibernate学习笔记十一>:树状结构设计 这是马士兵老师讲解Hibernate的一个作业题,树状结构设计,这是一个比较典型的例子,因此有必要写篇博文记录下. 树状结构的设计,它是在同一个类中使用了多对一(ManyToOne)和一对多(OneToMany). 在完成这个题目我们应该按照如下的步骤进行: 1.先思考数据库的模型应该是什么样的?? 数据库中的模型应该如下:即存在id p_id 2.思考面向对象的模型,及如何来进行映射??? 根据数据库中表的特点,对象应该有id name;由于

Hibernate学习——一般配置

mysql建表语句: create table EMPLOYEE ( id INT NOT NULL auto_increment, first_name VARCHAR(20) default NULL, last_name VARCHAR(20) default NULL, salary INT default NULL, PRIMARY KEY (id) ); Employee.java package com.study; public class Employee { private

【Hibernate学习】 ——ORM(三)

前面几种关系我们以前就经常用,对于继承我们也并不陌生,经常接触的类与类之间的继承用extends关键字,那么在表与表的关系中如何表示呢?下面我们来讲继承映射. 继承有三种实现的策略,单表继承,具体表继承,类表继承.下面来分析一下这三种方式 继承关联类关系  单表继承 每棵类继承树使用一个表,可知,这三个类在一张表中.如下表: 这张表包括了父类,子类的所有属性,通过Type来区分是哪个子类. 对象模型映射到关系模型: <classname="com.bjpowernode.hibernat.

hibernate 学习知识总结

1.最近用hibernate 学会很多知识,总结如下: (1)数据库表格已经设置默认值,在进行数据插入的时候,bean里面不赋值的话,插入之后该字段依旧是null 是因为hibernate默认插入和更新所有字段,如果某些字段不需要操作,需要配置下 (i)xml文件配置方式: <property name="account" type="java.lang.String" insert="false"> <column name=

【Hibernate学习】 ——ORM(一)

Hibernate是一种能实现ORM的框架.ORM即Object Relational Mapping,对象关系映射.也就是将关系数据库中表的数据映射成为对象,也就是说将表与表之间的操作映射成对象与对象之间的操作,通过实体类来达到操作表的目的.总之就是把对数据库的操作转化为对对象的操作,从而更体现了面向对象的思想. 一对一关联映射策略包括主键关联和唯一外键关联. 单向一对一 主键关联 让两个对象有相同的主键值,表名它们之间的一对一关系,数据库没有额外的字段来维护它们之间的关系,仅仅通过表的主键来

【Hibernate学习】 ——ORM(二)

上篇博客主要介绍了一对一的关系,主要理解单向与双向的区别,主键关联与唯一外键关联的区别.下面继续介绍一对多与多对多关联. 一对多关联映射 一个班级对应多个学生 单向一对多关系 关系表: classes代码 <classname="com.bjpowernode.hibernat.Classes"table="t_classes"> <idname="id"> <generatorclass="native&

《Hibernate学习笔记八》:组件映射

<Hibernate学习笔记八>:组件映射 前面介绍了一对一的单向.双向外键关联,例如,学生证和学生是一个一对一的关系.这篇博文主要是介绍下组件映射,即一个是另一个的一部分,例如,学生证的信息也可以作为学生信息的一部分,即在数据库中只存在学生一个表,而不是有学生和学生证两个表,并且这两个表中有一个一对一的关联关系. 如下: 有人或许会说,那我们就将学生和学生证的信息写在一个类中,则就不需要组件映射了,确实可以这样,但是,根据类的设计原则,我们一般都会将其设计为两个类,然后将学生证的信息作为一个

hibernate学习随记

hibernate学习随记: 一:hibernate的核心类和接口 ①  Configuration 类 它的用处是: 读取hibernate.cfg.xml 管理对象关系映射文件 <mapping resource=””> 加载hibernate 的驱动,url ,用户.. 管理hibernate配置信息 ②  hibernate.cfg.xml ③  对象关系映射文件 ④  SessionFactory (会话工厂) 可以缓存sql语句和数据(称为session级缓存)!! 是一个重量级的

Hibernate学习笔记:第一个程序的搭建

Hibernate学习笔记:第一个程序的搭建 前一段时间对Struts2这个框架有了一点点地了解,很高兴,自己开始学习Hibernate这个框架了.本篇博文将记录下第一个Hibernate程序的搭建过程.其实有时候个人觉得无论我们学习什么语言也好,还是学习什么框架也好,第一个HelloWorld程序真的相当重要,假如 我们在学习第一个HelloWorld程序都跑不出来,这完全影响着我们对新接触的东西的兴趣和动力,但是,往往第一个程序都会涉及到很多的配置,因此使得对于初学者要摸索一定的时间,对于我