ITjob就业培训java教材34

上传人:jiups****uk12 文档编号:88918511 上传时间:2019-05-13 格式:DOC 页数:17 大小:200KB
返回 下载 相关 举报
ITjob就业培训java教材34_第1页
第1页 / 共17页
ITjob就业培训java教材34_第2页
第2页 / 共17页
ITjob就业培训java教材34_第3页
第3页 / 共17页
ITjob就业培训java教材34_第4页
第4页 / 共17页
ITjob就业培训java教材34_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《ITjob就业培训java教材34》由会员分享,可在线阅读,更多相关《ITjob就业培训java教材34(17页珍藏版)》请在金锄头文库上搜索。

1、第三十四章:Hibernate基础 ITJob就业培训第三十四章:Hibernate基础学习目标n 理解ORM机制n 理解Hibernate的工作原理n Hibernate的配置和对象-映射文件n 理解对象持久化Hibernate简介Hibernate是Java应用和关系数据库之间的桥梁,它负责Java 对象关系数据之间的映射。Hibernate 内部封装了通过 JDBC 访问数据库的操作,向上层应用提供了面向对象的数据访问API。在Java 应用中使用Hibernate包含以下步骤。(1) 创建Hibernate的配置文件。 (2) 创建持久化类。 (3) 创建对象-关系映射文件。 (4)

2、通过Hibernate API编写访问数据库的代码。建立简单的Hibernate应用 本章通过一个简单的例子 customerApp 应用,演示如何运用 Hibernate 来访问关系数据库。customerApp 应用的功能非常简单:通过 Hibernate 保存、更新、删除、加载以及查询 Customer对象。创建 Hibernate的配置文件Hibernate 从其配置文件中读取和数据库连接有关的信息,这个配置文件应该位于应用的 classpath 中。Hibernate 的配置文件有两种形式:一种是 XML 格式的文件;还有一种是Java 属性文件,采用“健=值”的形式。 下面介绍如何

3、以Java 属性文件的格式来创建 Hibernate的配置文件。这种配置文件的默认文件名为hibernate.properties。hibernate.properties的内容如下:hibernate.dialect=net.sf.hibernate.dialect.MySQLDialect hibernate.connection.driver_class=com.mysql.jdbc.Driverhibernate.connection.url=jdbc:mysql:/localhost:3306/SAMPLEB hibernate.connection.username=root hi

4、bernate.connection.password=1234 hibernate.show_sql=true以上hibernate.properties文件包含了一系列属性及其属性值,Hibernate将根据这些属性来连接数据库,本例为连接 MySQL 数据库的配置代码。下表对以上 hibernate.properties文件中的所有属性做了描述。属性描述hibernate.dialectSQL指定数据库使用的方言hibernate.connection.driver_class指定数据库的驱动程序hibernate.connection.urlURL指定连接数据库的hibernate.c

5、onnection.username指定连接数据库的用户名hibernate.connection.password指定连接数据库的口令hibernate.show_sql如果为true,表示在程序运行时,会在控制台输出SQL语句,这有利于跟踪Hibernate的运行状态。默认为false。在应用开发和测试阶段,可以把这个属性设为true,以便跟踪和调试应用程序,在应用发布阶段,应该把这个属性设为false,以便减少应用的输出信息,提高运行性能。Hibernate能够访问多种关系数据库,如MySQL、Oracle和 Sybase等。尽管多数关系数据库都支持标准的SQL语言,但是它们往往还有各自

6、的 SQL方言,就象不同地区的人既能说标准的普通话,还能讲各自的方言一样。hibernate.dialect属性用于指定被访问数据库使用的 SQL 方言,当 Hibernate 生成 SQL 查询语句,或者使用 native 对象标识符生成策略时,都会参考本地数据库的SQL方言。创建持久化类持久化类是指其实例需要被 Hibernate 持久化到数据库中的类。持久化类通常都是域模型中的实体域类。持久化类符合JavaBean的规范,包含一些属性,以及与之对应的 getXXX()和setXXX()方法。以下定义了一个名为 Customer 的持久化类。package com.itjob.jiaowu

7、.hibernate; import java.io.Serializable; import java.sql.Date; import java.sql.Timestamp; public class Customer implements Serializable private Long id; private String name; private String email; private String password; private int phone; private boolean married; private String address; private cha

8、r sex; private String description; private byte image; private Date birthday; private Timestamp registeredTime; public Customer() public Long getId() return id; public void setId(Long id) this.id = id; public String getName() return name; public void setName(String name) this.name=name; /此处省略email、p

9、assword和phone等属性的getXXX()和setXXX()方法 持久化类符合JavaBean的规范,包含一些属性,以及与之对应的getXXX()和 setXXX()方法。getXXX()和 setXXX()方法必须符合特定的命名规则,“get”和“set”后面紧跟属性的名字,并且属性名的首字母为大写,例如 name 属性的 get 方法为 getName(),如果把 get方法写为getname()或者getNAME(),会导致 Hibernate在运行时抛出以下异常: net.sf.hibernate.PropertyNotFoundException: Could not fin

10、d a getter for property name in class com.itjob.jiaowu.hibernate.Customer 如果持久化类的属性为boolean类型,那么它的 get方法名既可以用“get”作为前缀,也可以用“is”作为前缀。例如 Customer 类的 married 属性为 boolean 类型,因此以下两种get方法是等价的: public boolean isMarried() return married; 或者 public boolean getMarried() return married; Hibernate 并不要求持久化类必须实现

11、java.io.Serializable 接口,但是对于采用分布式结构的 Java 应用,当 Java 对象在不同的进程节点之间传输时,这个对象所属的类必须实现Serializable接口,此外,在Java Web应用中,如果希望对 HttpSession中存放的 Java 对象进行持久化,那么这个Java 对象所属的类也必须实现Serializable接口。 Customer 持久化类有一个id属性,用来惟一标识Customer 类的每个对象。在面向对象术语中,这个 id 属性被称为对象标识符(OID,Object Identifier),通常它都用整数表示,当然也可以设为其他类型。如果 c

12、ustomerA.getId().equals(customerB.getId()的结果是 true,就表示 customerA 和 customerB 对象指的是同一个客户,它们和 CUSTOMERS 表中的同一条记录对应。 Hibernate 要求持久化类必须提供一个不带参数的默认构造方法,在程序运行时,Hibernate运用Java 反射机制,调用java.lang.reflect.Constructor.newInstance()方法来构造持久化类的实例。如果对这个持久化类使用延迟检索策略,为了使 Hibernate 能够在运行时为这个持久化类创建动态代理,要求持久化类的默认构造方法的

13、访问级别必须是 public 或protected 类型,而不能是 default 或 private 类型。在Customer类中没有引入任何Hibernate API,Customer类不需要继承Hibernate的类,或实现Hibernate的接口,这提高了持久化类的独立性。如果日后要改用其他的ORM产品,比如由Hibernate改为OJB,不需要修改持久化类的代码。创建数据库 Schema在本例中,与 Customer 类对应的数据库表名为 CUSTOMERS,它在 MySQL 数据库中的DDL定义如下: create table CUSTOMERS( ID bigint not nu

14、ll primary key, NAME varchar(15) not null, EMAIL varchar(128) not null, PASSWORD varchar(8) not null, PHONE int , ADDRESS varchar(255), SEX char(1) , IS_MARRIED bit, DESCRIPTION text, IMAGE blob, BIRTHDAY date, REGISTERED_TIME timestamp );CUSTOMERS 表有一个 ID 字段,它是表的主键,它和 Customer 类的 id 属性对应。CUSTOMERS表中的字段使用了各种各样的 SQL类型,参见下表。字段名SQL类型说明IDBIGINT整数,占8字节,取值范围为:-263 263-1NAMEVARCHAR变长字符串,占0 255个字节SEXCHAR定长字符串,占 0 255个字节IS_MARRIEDBIT布尔类型DESCRIPTIONTEXT长文本数据,占 0 65535 255字节。如果字符串长度小于255 ,可以用VARCHAR或 CHAR类型来表示。如果字符串长度大于255 ,可以定义为TEXT类型。IMAGEBLOB二进制长数据,占 0 65535字节,BLOB是 Binary Large Object的缩写。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号