【SSH】之Hibernate
来源:互联网 发布:佐伊技能数据 编辑:程序博客网 时间:2024/05/23 16:29
接着上篇博客,这篇博客继续介绍SSH之Hibernate。想先说明一下,本文只是简单的介绍Hibernate,但为什么放在SSH里,是为了后面有一个SSH的整合。所以只是从最基本最简单的原理来讲解Hibernate。
在开始之前我们最好先了解一下Hibernate。其实Hibernate本身是一个独立的、开放源码的对象关系型数据映射框架,它对JDBC进行了轻量级的封装,使得Java程序员可以随心所欲的使用对象编程的思想来操纵数据库。所以,简单的理解,可以把Hibernate理解成是和数据库打交道的框架。
好,现在我们来说如何配置Hibernate.还是按照那三个步骤:jar包、hibernate.cfg.xml主配置文件和*.hbm.xml映射文件。现在,先说配置Hibernate需要哪些jar包。
现在说一下这些jar包的作用:
1、antlr-2.7.6.jar:一个语言转换工具,Hibernate利用它实现HQL到SQL的转换。它可以接受词文法语言面熟,并能产生识别这些语言的语句的程序。
2、c3p0-0.9.1.jar:C3P0连接池
3、commons-collections-3.1.jar:collections Apache的工具集,用来增强Java对集合的处理能力。使用javax.persistence下的Annotation可以不依赖Hibernate的jar包,这样可以切换到其他的ORM框架。
4、dom4j-1.6.1.jar:dom4j xml解析器。是一个java的xml api,类似于jdom。用来读写xml文件的。
5、hibernate3.jar:Hibernate的核心库,这个没什么说的,必须使用的jar包
6、hibernate-jpa-2.0-api-1.0.0.Final.jar:对JPA(Java持久化API)规范的支持。
7、javassist-3.12.0.GA.jar:代码生成工具,Hibernate用它在运行时扩展java类和实现,同cglib
8、jta-1.1.jar:标准的java事务处理接口
9、mysql-connector-java-5.1.5-bin.jar:java连接mysql的数据库驱动
10、slf4j-api-1.6.1.jar:Hibernate使用的一个日志系统
好,下面说主配置文件:hibernate.cfg.xml,这个主配置文件是做什么用的?它里面都配置什么东西呢?下面我们就来具体说一下。Hibernate配置文件主要用于配置数据库连接和Hibernate运行时所需的各种属性。
<?xml version='1.0' encoding='utf-8'?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><pre name="code" class="javascript"> //1.数据库连接信息 <property name="dialect"> org.hibernate.dialect.MySQL5InnoDBDialect </property> //后面要写数据库名字和mysql的用户名和密码 <property name="connection.url">jdbc:mysql://localhost:3306/******</property> <property name="connection.driver_class">com.jdbc.mysql.Driver</property> <property name="connection.username">****</property> <property name="connection.password">****</property> //2.其他配置 (这些有一个共同的特点,就是这些不配是可以的) //显示SQL语句 <property name="show_sql">true</property> //自动建表,update的意思就是不要每次都重建(每次都重建,数据就没了) <property name="hbm2ddl.auto">update</property> //自动建表<!-- <property name="hbm2ddl.auto">create</property> --> //3.导入映射文件<mapping resource="cn/itcast/oa/domain/User.hbm.xml" /> //原来role的实体和映射文件写好了,就是映射不到数据库中去,就是因为这个原因Hibernate.cfg.xml配置文件中没有配<mapping resource="cn/itcast/oa/domain/Role.hbm.xml" /><mapping resource="cn/itcast/oa/domain/Department.hbm.xml" /></session-factory></hibernate-configuration>看配置文件里的信息注意看这句话:
//1.数据库连接信息<property name="dialect"> org.hibernate.dialect.MySQL5InnoDBDialect</property>
这个是Hibernate主配置文件中配置的mysql方言,那么什么是方言呢?因为不同的数据库,在SQL语句设计上是存在差异的,就好比不同地方的人说不同的方言,Hibernate到哪个数据库哪里就要说哪个数据库的“方言”。而我们要做的就是配置方言选项,告诉Hibernate要说哪里的方言。
那么这个方言我们不会写啊,这个不用记的。去哪里找呢?跟我来。首先打开类型,Ctrl+Shift+t
所有的方言都是有类名的,而且这个方言还有特点,开头是数据库类型,结尾是方言结尾。
mysql*dialect这个就是mysql的方言
所以相对应的Oracle方言就是这样
Sql Server的方言如下:
所以按照这样的方式,选择一个就可以了。
好了,下面说*.hbm.xml映射文件。什么是映射文件呢?映射文件是用来定义Hibernate的持久化类和关系数据库之间的映射。这个映射文件是通过一系列的xml元素的配置,来将持久化类与数据库表之间建立起一一映射,这意味着映射文档是按照持久化类的定义来创建的,而不是表的定义。
所以简单来说,映射文件是Hibernate与数据库进行持久化的桥梁,是设定数据库表与实体类进行关联,让用户以面向对象的方式去操作持久化类,也就是实体bean,而不再是操作数据库表,免去了用户频繁书写sql语句的麻烦。我们以User的映射文件User.hbm.xml为例,代码如下:
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="cn.itcast.oa.domain"><class name="User" table="itcast_user"><id name="id">//这个地方,主键生成策略,我们采用native <generator class="native"/></id><property name="loginName" /><property name="password" /><property name="name" /><property name="gender" /><property name="phoneNumber" /><property name="email" /><property name="description" />//department属性, 本类与Department的多对一的关系 //name属性名 ; class类型,指关联谁 ;column列,指哪个外键 <many-to-one name="department" class="Department" column="departmentId"></many-to-one>//roles属性,本类与Role的多对多的关系 -->//一对多和多对一有一个外键,但是多对多有两个外键 -->//所以多对多比多对一多两个字段。多一个Table,多一个外键column --><set name="roles" table="itcast_user_role"><key column="userId"></key><many-to-many class="Role" column="roleId"></many-to-many></set></class></hibernate-mapping>
其实Hibernate的学习还远不止此,这篇博客只是简单的配置一下Hibernate,但是要继续研究的东西还很多。在SSH整合的时候我们会对主配置文件进行更进一步的划分,等在SSH整合的博客中会详细讲解,敬请期待吧!
- 【SSH】之Hibernate
- SSH之Hibernate
- ssh之Hibernate
- 【SSH】 之Hibernate
- SSH之Hibernate
- SSH之Hibernate
- SSH之Hibernate
- SSH之hibernate(一)
- SSH之hibernate(二)
- 走近SSH之Hibernate--HQL
- 【SSH】hibernate之hql学习
- ssh学习之hibernate篇
- SSH框架之Hibernate介绍
- ssh框架 之 hibernate 之 hibernate.cfg.xml配置解析
- 重拾ssh之hibernate配置
- SSH框架-HIbernate之数据持久化
- ssh之hibernate+spring的整合
- SSH三大框架初探之Hibernate
- Ant自动编译打包&发布 android项目
- HP UNIX 命令
- Qt Quick里的AnimatedSprite的用法
- SQL注入
- 串口程序设计——struct termios结构体
- 【SSH】之Hibernate
- win7 64位下如何安装配置mysql-winx64(安装记录)
- bzoj 2464 题解
- jQuery中json对象与json字符串互换
- UVA 1346 - Songs (贪心)
- leetcode——First Missing Positive
- HDU 4405 Aeroplane chess(概率DP)
- oracle 11g 自动维护任务说明 示例
- Qt Quick之ListView下拉刷新数据