hibernate框架介绍
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二、持久化Java类必须遵循的原则
为类的持久化类字段申明访问方法(get/set)。 Hibernate对JavaBeans风格的属性实行持久 化。 实现一个默认的构造方法(constructor)。 如果是集合类型的属性,它的类型必须定义为 集合的接口。例如:List、Set。 提供一个标识属性(identifier property)。
1.1主键生成策略generator
generator
主键生成器,每个主键都必须定义相应的主键生成策略。它用来为持 久化类实例生成唯一的标识。
Hibernate内置的主键生成策略
数据库提供的主键生成机制。identity、sequence(序列) 。 外部程序提供的主键生成机制。increment (递增) ,hilo(高低 位) ,seqhilo(使用序列的高低位 ),uuid.hex(使用了IP地址 +JVM的启动时间(精确到1/4秒)+系统时间+一个计数器值(在 JVM中唯一) ),uuid.string。 其它。native(本地),assigned(手工指定),fnce/zh-cn/html/
内容
一、持久化层-O/R Mapping 二、Hibernate介绍 三、Hibernate映射 四、 Hibernate 核心API 五、数据关联 六、Hibernate查询
如何进行对象-关系数据库的匹配
三、Hibernate映射申明(Mapping declaration)
hibernate-mapping 类层次。class 1、主键。id 2、基本类型。property 3、自定义类。many-to-one | one-to-one 4、集合。set | list | map | array 4.1、one-to-many 4.2、many-to-many
public class User { private String name; private String password; private List address; ……… } create table tbl_user ( name varchar(255) not null , password varchar(255), ………. primary key (name) )
<id name="id" column="ID" type="long"> <generator class="increment"/> </id> <property name="name" column="NAME" type="string" not-null="true" /> <property name="email" column="EMAIL" type="string" not-null="true" /> <property name="address" column="ADDRESS" type="string" not-null="true" /> <property name="phone" column="PHONE" type="int" /> <property name="description" column="DESCRIPTION" type="text"/> </class> </hibernate-mapping>
一、创建Hibernate的配置文件(三)
基于数据源的配置文件hibernate. cfg.xml
<hibernate-configuration> <session-factory > <!-- datasource connection properties --> <property name="connection.datasource">java:jdbc/mydb</property> <!-- dialect for MySQL --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.show_sql">false</property> <property name="hibernate.transaction.factory_class">org.hibernate.transaction.J DBCTransactionFactory</property> <mapping resource="User.hbm.xml"/> </session-factory> </hibernate-configuration>
持久化类Personinfo
package mypack; import java.io.Serializable; import java.sql.Date; import java.sql.Timestamp; public class Personinfo implements Serializable { private Long id; private String name; private String email; private int phone; private String address; private String description; public Personinfo(){} public Long getId(){ return id; } public void setId(Long id){ this.id = id; } ……
如何进行对象-关系数据库的匹配?
对象
类的属性(基本 类型) 类 1:n/n:1 n:m
关系数据库
表的列 表 外键 关联表
O/R Mapping -What? Why?
什么是O/R Mapping?
对象-关系映射是一门非常实用的工程技术,它实现了 Java应用中的对象到关系数据库中的表的自动的(和透 明的)持久化,使用元数据(meta data)描述对象与数 据库间的映射。
Hibernate开发步骤
一、创建Hibernate的配置文件
二、持久化类的设计
三、持久化类和关系数据库的映 射 四、应用的开发
一、创建Hibernate的配置文件(一)
hibernate.properties
hibernate.dialect = net.sf.hibernate.dialect.MySQLDialect hibernate.connection.driver_class = com.mysql.jdbc.Driver hibernate.connection.url = jdbc:mysql://localhost/HibernateTest ername = root hibernate.connection.password = 123456
Hibernate优势
开源(LGPL) 成熟 流行(约13 000 downloads/month) 自定义API
Hibernate安装
首先从/ 下载最新的hibernate压 缩包 Hibernate是ORM的解決方案,其对底层数据库的操作依赖 于JDBC,必须有JDBC驱动 把jta,hibernate3,cglib commons-collections commonslogging,odmg,dom4j,ehcache,log4j等JAR文件 放到你部署的WEB-INF\lib目录里
三、持久化类和关系数据库的映射
Hibernate采用XML格式的文件来指定对 象和数据库之间的映射。在程序运行时, Hibernate根据这个映射文件生成各种SQL语 句。 映射文件应和对应的持久化类放在同一个 目录下,同名,扩展名为hbm.xml
(参考: /hib_docs/reference/zhcn/html/mapping.html)
映射文件Personinfo.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "/hibernate-mapping-2.0.dtd"> <hibernate-mapping> <class name="mypack.Personinfo" table="PERSONINFO">
O/R Mapping的优点
提高生产率(Productivity) 可维护性(Maintainability) 更好性能(Performance) 厂商独立性(Vendor independence)
Hibernate介绍
Hibernate概述
Hibernate是非常优秀、成熟的O/R Mapping框架。它提供 了强大的对象和关系数据库映射以及查询功能。
一、创建Hibernate的配置文件(二) hibernate. cfg.xml
<hibernate-configuration> <session-factory> <property name="dialect"> net.sf.hibernate.dialect.MySQLDialect</property> <property name=―connection.driver_class‖><!– JDBC驱动 --> com.mysql.jdbc.Driver</property> <property name="connection.url"> jdbc:mysql://localhost/HibernateTest</property> <property name="ername">root</property> <property name="connection.password">123456</property> <property name="hibernate.transaction.factory_class">org.hibernate.transacti on.JDBCTransactionFactory</property> <mapping resource="User.hbm.xml"/> </session-factory> </hibernate-configuration>
Hibernate资源
官方网站: 国内网站: 《精通Hibernate:Java对象持久化技术详解 》作者:孙卫琴 《Hibernate 中 文 开 发 指 南 》 作 者 夏 昕 (/) 《深入浅出Hibernate》作者:夏昕 曹晓钢 唐勇 《Hibernate in Action》作者:Christian Bauer and Gavin King
一、类层次class
<class name="ClassName" table="tableName" />
(1) (2)
1、主键-id
<id name="propertyName" (1) type="typename" (2) column="column_name" (3) <generator class=“generatorClass”/> (4) </id> (1)、name (可选) :标识属性的名称。 (2)、type(可选):标识Hibernate类型的名字。 (3) 、 column( 可选-默认为属性名 ) :对应数据库 表的主键字段的名字。