使用Hibernate开发租房系统+(笔记)

合集下载

Hibernate学习笔记

Hibernate学习笔记

Hibernate项目的构建与配置1.在项目里倒入Hibernate所必须的Jar包(1)Hibernate框架可以使用在任何的Java项目里,并不一定是Web项目。

只需要在项目里倒入Hibernate所必须要使用的jar包就可以了。

(2)在Hibernate的官网下载hibernate-release-4.2.2.Final.zip解压,要使用Hibernate必须导入的jar包就在目录“hibernate-release-4.2.2.Final\lib\required”下。

倒入此路径下的所有jar包就可以了。

2.配置hibernate.cfg.xml文件(1)配置hibernate.cfg.xml文件可以参考“\project\etc”目录下的hibernate.cfg.xml文件与hibernate.properties文件。

(2)使用Hibernate连接MySQL的hibernate.cfg.xml配置文件如下:<hibernate-configuration><session-factory>(设置显示Hibernate产生的SQL语句)<property name="show_sql">true</property>(设置MySQL的SQL语法的方言)<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>(设置MySQL的驱动程序)<property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property>(设置MySQL的数据库路径、用户名、密码)<property name="hibernate.connection.url">jdbc:mysql:///java</property><property name="ername">root</property><property name="hibernate.connection.password">lizhiwei</property>(设置当数据库要保存的表不存在时,就新建表)<property name="hibernate.hbm2ddl.auto">update</property>(设置对象与数据库表的关系映射文件)<mapping resource="vo/User.hbm.xml"/></session-factory></hibernate-configuration>(3)此配置文件一般放在项目的src目录下。

hibernatemybatis内部测试笔试题

hibernatemybatis内部测试笔试题

ACCP7.0内部测试学期: Y2 模块:Java考试时间: 50分钟总分数:100分注意:1、请勿在试卷上留下笔迹2、交卷时试题和答案均要上交《使用Hibernate开发租房系统》内部测试笔试题一、选择题(共25题,每题2.5分,选择一项或多项,漏选错选不得分)1.在Hibernate中,以下关于主键生成器说法错误的是()。

A.increment可以用于类型为long、short或byte的主键B.identity用于如SQL Server、DB2、MySQL等支持标识列的数据库C.sequence用于如Oracle、SQL Server等支持序列的数据库D.native由Hibernate根据底层数据库自行判断采用何种主键生成策略,是由使用的数据库生成主键的值2.在Hibernate中,关于脏检查和刷新缓存说法正确的是()。

A.当事务提交时,会发生脏检查B.Session的flush( )方法是刷新缓存的方法C.在执行Session的commit( )方法之前不会调用Session的flush( )方法D.编写代码时,调用commit( )方法之前要调用flush( )方法3.使用HQL查询所有部门信息,以下正确的是()。

A.from DeptB.select * from cn.jbit.demo.entity.DeptC.select Dept from cn.jbit.demo.entity.Dept dD.select d from Dept d4.关于Query接口的list( )和iterate( )方法,说法正确的是()。

A.执行list( )方法,查询所有符合条件的记录B.执行iterate( )方法,查询所有符合条件的记录C.执行list( )方法,查询出所有符合条件的主键值D.执行iterate ( )方法,查询出所有符合条件的主键值5.在HQL中,关于Query接口绑定参数的方法,说法正确的是()。

基于java的住房租赁管理系统实训报告

基于java的住房租赁管理系统实训报告

基于java的住房租赁管理系统实训报告一、项目背景随着社会发展和人口增加,住房租赁行业变得越来越重要。

为了更好地管理和监控住房租赁业务,需要开发一个基于Java 的住房租赁管理系统。

该系统可以帮助房东和租户更方便地进行房屋租赁和管理。

二、系统需求1. 用户管理:系统需要实现房东和租户的注册、登录、信息修改等功能。

2. 房屋管理:房东可以发布房屋出租信息,包括房屋地址、面积、租金等。

系统需要提供搜索功能,使租户可以根据自己的需求找到合适的房屋。

3. 合同管理:系统需要实现合同的生成、查看和修改功能。

合同中需要包含房屋租赁的具体信息。

4. 支付管理:系统需要支持在线支付功能,租户可以通过系统进行租金的支付。

5. 统计报表:系统需要生成租金收入、房屋数量和租户数量等统计报表,以帮助房东和租户进行业务分析和决策。

三、系统架构系统采用三层架构,分为表现层、业务逻辑层和数据访问层。

1. 表现层:使用Java Web技术实现用户界面,包括页面访问和控制。

2. 业务逻辑层:处理用户请求,实现各种业务逻辑,如用户注册、房屋发布、合同管理等。

3. 数据访问层:负责与数据库进行交互,实现用户信息、房屋信息、合同信息等的读写操作。

四、开发工具和环境1. 开发工具:Eclipse、IntelliJ IDEA等集成开发环境。

2. 开发语言:Java。

3. 数据库:MySQL。

4. Web框架:Spring MVC。

5. 前端技术:HTML、CSS、JavaScript。

五、开发过程1. 系统分析与设计:根据需求,进行系统分析和设计,包括绘制系统用例图、类图、数据库设计等。

2. 环境搭建:安装开发工具和数据库,配置开发环境。

3. 模块开发:根据系统设计,逐个实现系统的各个模块,包括用户管理、房屋管理、合同管理等。

4. 单元测试:对每个模块进行单元测试,确保功能的正确性。

5. 集成测试:将各个模块进行集成测试,确保系统的整体功能正常。

Hibernate课堂笔记

Hibernate课堂笔记

使用hibernate步骤
1.创建表
2.创建web项目导入hibernate支持jar 数据库驱动包jstl支持jar

3.编写实体类(即hibernate即将操作的对象)
4.和实体类在同一目录下编写映射文件xxx.hbm.xml
5.在src根目录下添加hibernate 配置文件hibernate.cfg.xml 含数据
库连接信息urldriver_class username password dialectshow_sqlformat_sql最重要的是<mapping>指定要加载的映射文件。

6.在测试类读取配置文件获取session 通过session操作实体类对象
实现CRUD操作[注没有SQL语句操作的是实体类对象或实体类属性]
Hibernate 核心API Configuration SessionFactory Session Transaction Query Criteria?
进阶思考下?如何简化代码?将重复使用的方法提取出来。

使用mysql数据库创建数据库名myhouse
练习1已知数据库表结构如下图所示,使用hibernate实现添加纪录修改记录删除记录以及查询单条记录功能。

练习2在上题基础上在util包下添加工具类HibernateUtil添加获取Session方法和SessionFactory发发
添加com.chinasofti.dao定义接口并在此接口下定义CRUD方法
添加com.chinasofti.dao.impl实现接口类并实现对应方法
新建测试类调用CRUD四个方法
有如下表结构
先创建表再依次创建相对应的实体类。

hibernate4学习笔记

hibernate4学习笔记

hibernate4学习笔记Hibernate4学习笔记本⼈全部以⾃学为主,在⽹上收集各种学习资料,总结归纳学习经验,现将学习路径给予⼤家分享。

此次学习的hibernate的版本是:hibernate-release-4.2.4.Final(截⽌2015年7⽉31⽇最新版),JAVA的版本是:java8.0,使⽤的开发⼯具是:Eclipse Mars Release (4.5.0)。

第⼀天:Hibernate4基础知识和HelloWorld简单编程Hibernate是⼀种半成品ORM框架,对数据库持久化操作,程序员对数据库的操作转换成对对象的操作。

ORM 采⽤元数据来描述对象-关系映射细节, 元数据通常采⽤XML 格式, 并且存放在专门的对象-关系映射⽂件中。

HelloWorld简单编程1、准备Hibernate环境(1)导⼊Hibernate的Jar包,如下:(2)导⼊Mysql驱动包,我⽤的数据库是:Mysql 5.0,数据库驱动包如下:以上所有Jar加完毕之后,需要加⼊到Eclipse⾃⾝系统⾥⾯,具体如下:以上操作完毕之后,Hibernate的环境就算搭建完毕,下⾯就可以进⼀步操作。

2、配置hibernate.cfg.xml⽂件,主要是对数据库的连接,具体如下:"-//Hibernate/Hibernate Configuration DTD 3.0//EN""/doc/63fa364d5022aaea998f0fde.html /hibernate-configuration-3.0.dtd ">rootmysqlname="connection.driver_class">com.mysql.jdbc.Driver jdbc:mysql:///Test(或者:jdbc:mysql://localhost:3306/Test)name="dialect">org.hibernate.dialect.MySQLInnoDBDialecttruetrueupdate3、编写⼀个实例类News.java,具体代码如下:package com.hibernate.helloworld;import java.sql.Date;public class News {private Integer id;private String title;private Date date;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public Date getDate() {return date;}public void setDate(Date date) {this.date = date;}public News(String title, String author, Date date) { super();this.title = title;this.author = author;this.date = date;}public News(){}@Overridereturn"News [id="+ id+ ", title="+ title+ ", author="+ author + ", date=" + date + "]";}}4、创建News.hbm.xml配置映射⽂件,具体代码如下:"/doc/63fa364d5022aaea998f0fde.html /hibernate-mapping-3.0.dtd">5、将映射⽂件News.hbm.xml指定到hibernate.cfg.xml配置⽂件⾥⾯,即在hibernate.cfg.xml⽂件⾥加⼊⼀⾏映射代码,具体如下:6、创建hibernate API操作测试类(Juit测试),验证hibernate的优势效果,具体代码如下:package com.hibernate.helloworld;import java.sql.Date;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;import org.hibernate.service.ServiceRegistryBuilder;import org.junit.Test;public class HibernateTest {@Testpublic void test() {//1. 创建⼀个 SessionFactory 对象SessionFactory sessionFactory=null;//1). 创建 Configuration 对象: 对应 hibernate 的基本配置信息和对象关系映射信息Configuration configuration=new Configuration().configure();//4.0 之前这样创建//sessionFactory=configuration.buildSessionFactory();//2). 4.0以后创建⼀个 ServiceRegistry 对象: hibernate 4.x 新添加的对象//hibernate 的任何配置和服务都需要在该对象中注册后才能有效.ServiceRegistry serviceRegistry=newServiceRegistryBuilder().applySettings(configuration.getProperties() ).buildServiceRegistry();sessionFactory=configuration.buildSessionFactory(serviceRegistry) ;//2. 创建⼀个 Session 对象Session session=sessionFactory.openSession();//3. 开启事务Transaction transaction=session.beginTransaction();//4. 执⾏保存操作News news = new News("Java12345", "ATGUIGU", new Date(new java.util.Date().getTime()));session.save(news);//5. 提交事务/doc/63fa364d5022aaea998f0fde.html mit();//6. 关闭 Sessionsession.close();//7. 关闭 SessionFactory 对象sessionFactory.close();}}7、测试结果如下:(1)数据库⾥⾯的结果如下:(2)Eclipse下的语句⽣成如下:以上就是简单Hibernate的测试,总结:1、不需要在数据库⾥⾯创建任何数据,由hibernate ⾃动⽣成;2、代码简单易理解,不复杂,测试数据只需要先创建以下⼏个步骤:SessionFactory-→Session-→Transaction-→session操作数据库-→提交-→关闭;3、不需要写SQL 语句,从头到尾没有写⼀条SQL语句,反⽽Hibernate帮我们⽣成SQL语句。

hibernate4学习笔记

hibernate4学习笔记

Hibernate4学习笔记本人全部以自学为主,在网上收集各种学习资料,总结归纳学习经验,现将学习路径给予大家分享。

此次学习的hibernate的版本是:hibernate-release-4.2.4.Final(截止2015年7月31日最新版),JAVA的版本是:java8.0,使用的开发工具是:Eclipse Mars Release (4.5.0)。

第一天:Hibernate4基础知识和HelloWorld简单编程Hibernate是一种半成品ORM框架,对数据库持久化操作,程序员对数据库的操作转换成对对象的操作。

ORM 采用元数据来描述对象-关系映射细节, 元数据通常采用XML 格式, 并且存放在专门的对象-关系映射文件中。

HelloWorld简单编程1、准备Hibernate环境(1)导入Hibernate的Jar包,如下:(2)导入Mysql驱动包,我用的数据库是:Mysql 5.0,数据库驱动包如下:以上所有Jar加完毕之后,需要加入到Eclipse自身系统里面,具体如下:以上操作完毕之后,Hibernate的环境就算搭建完毕,下面就可以进一步操作。

2、配置hibernate.cfg.xml文件,主要是对数据库的连接,具体如下:<?xml version="1.0"encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""/hibernate-configuration-3.0.dtd "><hibernate-configuration><session-factory><!-- 配置连接数据库的基本信息 --><property name="ername">root</property><property name="connection.password">mysql</property><propertyname="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql:///Test(或者:jdbc:mysql://localhost:3306/Test)</property><!-- 配置 hibernate 的基本信息 --><!-- hibernate 所使用的数据库方言 --><propertyname="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property> <!-- 执行操作时是否在控制台打印 SQL --><property name="show_sql">true</property><!-- 是否对 SQL 进行格式化 --><property name="format_sql">true</property><!-- 指定自动生成数据表的策略 --><property name="hbm2ddl.auto">update</property></session-factory></hibernate-configuration>3、编写一个实例类News.java,具体代码如下:package com.hibernate.helloworld;import java.sql.Date;public class News {private Integer id;private String title;private String author;private Date date;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public Date getDate() {return date;}public void setDate(Date date) {this.date = date;}public News(String title, String author, Date date) {super();this.title = title;this.author = author;this.date = date;}public News(){}@Overridepublic String toString() {return"News [id="+ id+ ", title="+ title+ ", author="+ author + ", date=" + date + "]";}}4、创建News.hbm.xml配置映射文件,具体代码如下:<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""/hibernate-mapping-3.0.dtd"><!-- Generated 2015-7-31 17:08:25 by Hibernate Tools 3.4.0.CR1 --><hibernate-mapping><class name="com.hibernate.helloworld.News"table="NEWS"> <id name="id"type="ng.Integer"><column name="ID"/><!-- 指定主键的生成方式,系统默认的是:assigned, 改成native: 使用数据库本地方式 --><generator class="native" /></id><property name="title"type="ng.String"><column name="TITLE"/></property><property name="author"type="ng.String"><column name="AUTHOR"/></property><property name="date"type="java.sql.Date"><column name="DATE"/></property></class></hibernate-mapping>5、将映射文件News.hbm.xml指定到hibernate.cfg.xml配置文件里面,即在hibernate.cfg.xml文件里加入一行映射代码,具体如下:6、创建hibernate API操作测试类(Juit测试),验证hibernate的优势效果,具体代码如下:package com.hibernate.helloworld;import java.sql.Date;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;import org.hibernate.service.ServiceRegistryBuilder;import org.junit.Test;public class HibernateTest {@Testpublic void test() {//1. 创建一个 SessionFactory 对象SessionFactory sessionFactory=null;//1). 创建 Configuration 对象: 对应 hibernate 的基本配置信息和对象关系映射信息Configuration configuration=new Configuration().configure();//4.0 之前这样创建//sessionFactory=configuration.buildSessionFactory();//2). 4.0以后创建一个 ServiceRegistry 对象: hibernate 4.x 新添加的对象//hibernate 的任何配置和服务都需要在该对象中注册后才能有效.ServiceRegistry serviceRegistry=newServiceRegistryBuilder().applySettings(configuration.getProperties() ).buildServiceRegistry();sessionFactory=configuration.buildSessionFactory(serviceRegistry) ;//2. 创建一个 Session 对象Session session=sessionFactory.openSession();//3. 开启事务Transaction transaction=session.beginTransaction();//4. 执行保存操作News news = new News("Java12345", "ATGUIGU", new Date(new java.util.Date().getTime()));session.save(news);//5. 提交事务mit();//6. 关闭 Sessionsession.close();//7. 关闭 SessionFactory 对象sessionFactory.close();}}7、测试结果如下:(1)数据库里面的结果如下:(2)Eclipse下的语句生成如下:以上就是简单Hibernate的测试,总结:1、不需要在数据库里面创建任何数据,由hibernate 自动生成;2、代码简单易理解,不复杂,测试数据只需要先创建以下几个步骤:SessionFactory-→Session-→Transaction-→session操作数据库-→提交-→关闭;3、不需要写SQL 语句,从头到尾没有写一条SQL语句,反而Hibernate帮我们生成SQL语句。

Java相关课程系列笔记之十四Hibernate学习笔记(建议用WPS打开)

Java相关课程系列笔记之十四Hibernate学习笔记(建议用WPS打开)

Hibernate学习笔记Java相关课程系列笔记之十四笔记内容说明Hibernate(梁建全老师主讲,占笔记内容100%);目录一、 Hibernate的概述 (1)Hibernate框架的作用 (1)Hibernate访问数据库的优点 (1)JDBC访问数据库的缺点 (1)Hibernate的设计思想 (1)二、 Hibernate的基本使用 (2)Hibernate的主要结构 (2)Hibernate主要的API (2)Hibernate使用步骤 (2)HQL语句(简要介绍) (6)三、数据映射类型 (7)映射类型的作用 (7)type映射类型的两种写法 (7)四、 Hibernate主键生成方式 (8)五种生成方式 (8)五、 Hibernate基本特性 (9)对象持久性 (9)处于持久状态的对象具有的特点 (9)三种状态下的对象的转换 (9)批量操作:注意及时清除缓存 (9)案例:三种状态下的对象使用 (10)一级缓存机制(默认开启) (10)一级缓存的好处 (10)管理一级缓存的方法 (10)延迟加载机制 (11)具有延迟加载机制的操作 (11)常犯的错误 (12)延迟加载的原理 (12)Session的get和load方法的区别 (12)延迟加载的好处 (12)案例:测试延迟加载 (12)案例:重构NetCTOSS资费管理模块 (13)Java Web程序中如何用延迟加载操作(OpenSessionInView) (15)六、关联映射 (18)一对多关系one-to-many (18)多对一关系many-to-one (19)多对多关联映射many-to-many (19)关联操作(查询join fetch/级联cascade) (21)继承关系映射 (24)七、 Hibernate查询方法 (27)HQL查询 (27)HQL和SQL的相同点 (27)HQL和SQL的不同点 (27)HQL典型案例 (27)Criteria查询 (30)Native SQL原生SQL查询 (31)八、 Hibernate高级特性 (32)二级缓存 (32)二级缓存开启方法及测试 (32)二级缓存管理方法 (33)二级缓存的使用环境 (33)查询缓存 (33)查询缓存开启方法及测试 (33)查询缓存的使用环境 (33)九、 Hibernate锁机制 (34)悲观锁 (34)悲观锁的实现原理 (34)悲观锁使用步骤及测试 (34)乐观锁 (35)乐观锁的实现原理 (35)乐观锁使用步骤及测试 (35)十、其他注意事项 (36)源码服务器管理工具 (36)利用MyEclipse根据数据表自动生成实体类、 (36)根据实体类和生成数据表 (37)Hibernate中分页查询使用join fatch的缺点 (37)Hibernate的子查询映射 (38)一、Hibernate的概述Hibernate框架的作用Hibernate框架是一个数据访问框架(也叫持久层框架,可将实体对象变成持久对象,详见第5章)。

hibernate笔记

hibernate笔记

步步为营Hibernate全攻略(一)构建Hibernate框架环境任何一项新技术的出现都有它的必然性,Hibernate也不例外,所以在掌握Hibernate的具体应用之前我们一定先要了解Hibernate是什么?使用Hibernate会给我们的程序开发带来哪些好处?使用Hibernate的好处简单来讲体现在以下几个方面:1. Hibernate说白了就是对持久层进行的封装,它简化了对数据库的操作,使得我们可以以对象方式直接访问数据库中的数据。

实现了完全的OO思想。

2. 另外由于Hibernate对JDBC的彻底封装,使得我们可以不用在程序中写传统的sql语句便能实现对数据库的各种操作,极大的提高了生产力。

3. Hibernate支持MySQL,SQL Server等多种数据库。

Hibernate提供了多种数据库的接口,只要更改配置信息可以实现对不同数据库的操作,换句话说也就是你可以轻视的实现数据库更换。

说了这么多Hibernate的好处,那Hibernate到底该怎样用呢?别急下面我们就来看看Hibernate环境是如何搭建起来的。

1. 建立Java项目(也可以是java web项目)。

2. 导入相关jar包。

导入jar包的方式可以有两种。

第一种是直接添加外部jar包,也就是我们的“Add External JARs”。

另外一种是先建立自己的jar包库,然后向新建的库中加入jar包,如果使用这种方式最后一定不要忘记将建好的库引入到项目中。

两种方式均可,但一般更推荐第二种方式。

加入的jar包主要有以下这些:2.1在Hibernate_Home/lib/路径下的所有jar包。

2.2加入Hibernate核心jar包:hibernate3.jar。

2.3加入所使用的数据库的JDBC驱动包。

使用MySQL数据库则加入MySQL数据库驱动mysql-connector-java-3.1.13-bin.jar。

hibernate自我总结的部分知识点

hibernate自我总结的部分知识点

Hibernate基本知识点Hibernate介绍Hibernate的Hello WorldXml配置形式Annotation配置形式Hibernate原理的模拟,重点讲思路,代码不全部实现Hibernate的基本配置Hibernate常用类介绍与对象三种状态Hibernate数据库连接池配置Hibernate关系映射一对一一对多多对多Hibernate关系映射的增删改查Hibernate查询(HQL语句的使用)Hibernate条件查询(Criteria Queries)1.Hibernate介绍1)参考我画的hibernate结构图,结合官方文档结构图去理解2)是一个对象关系映射框架,对jdbc进行了轻量级的封装,可以让开发者以面OOP编程思维去持久化数据3)持久层框架。

ORM框架2.Hibernate的Hello World1)xml配置形式i.新建java项目hibernate01ii.引入hibernate4的相关包iii.引入oracle驱动包,建立student表iv.新建hibernate配置文件hibernate.cfg.xmla)从官方文档中copy样例b)修改相应的数据库连接,修改数据库方言v.新建实体类Studentvi.新建实体类Student对应的映射文件vii.将映射文件添加到hibernate.cfg.xml中viii.编写测试类,注意hibernate3和hibernte4的写法不同i.Hibernate3:参考文档i.Hibernate4:1.Configuration cfg=new Configuration().configure();2.ServiceRegistry sr=newServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry();3.cfg.buildSessionFactory(sr)2)Annotation配置形式i.建立teacher表ii.新建Teacher实体类iii.在Teacher类上加上注解i.在类名上@Entity,在主键属性的get方法上加@IDii.@GeneratedValue指定主键的生成策略,根据数据库自动判断iv.在hibernate.cfg.xml中添加Teacher类实体映射i.<mapping class="com.chinasoft.model.Teacher"/>,注意包名之间是点号v.编写测试类进行测试注意Hibernate3xml配置和注解配置的区别:注解:Configuration cfg=new AnnotationConfiguration();cfg.configure().bulidSessionFactory();3.Hibernate原理模拟(了解)1)思路:客户新建了一个实体对象例如Student,调用session.save()方法,就帮我们把对象保存到了数据库中去,Hibernate框架中肯定是对这一块进行了封装,帮我们构造了sql语句。

Hibernate入门笔记

Hibernate入门笔记

一、第一个应用实例1. 搭建环境;新建一个名为HibernateDemo 的java L 程,并导入Hibernate 的jar 包, 特别要注意除了导入lib 下的jar 包还需导入核心jar 包。

曲于涉及数据库操作,还应 导入mysql 驱动包。

说明,如果使用最新的hibernatehibernate 的基本jar 包(7个)来源:13.2lib\required 下的所有jar 包2. 简述 Hibernate 的作用:ORM : Object Relational Mapping» 对象关系映射。

将 jas 程序中的对象自动持久化到关系数®库中。

而Hibernate 的作用好比就是在java 对象与 关系数据库之间的一座桥梁,它主要负责两者之间的映射。

在Hibernate 内部封装了 JDBC 技术(但只是一个轻量级的封装,因而可以让程序设计人员更方便的以面向对象的思想操 纵数据库),并向外提供API 接口。

3. 建新一个名为的类,即是上面所说的java 对象。

我们以后称这种类为实体类(或持 久化类),它的对象为实体对象(或是持久化对象)。

内容如下:packagepublic int getIdO { return id;public void setld(int id) { =id;public String getName() { return name;public void setName(String name) { =name;public Date getDateO { return date;public void setDate (Date date) { =date;4. 编写配置文件:。

它和放在同一个包下。

内容如下:<xml version=""〉<!DOCTYPE hibernate-mapping PUBLIC"-体类定义规则:Domain object (java 对象)必须要有构造方法,同时建议有一个id 属性,为了赖加载, 这个java 类的声明最好不用finalo8•开发流程: private private class User{ int id;String name;private Date date;官方推荐:先Domain object 再mapping,最后是DB 。

hibernate学习笔记

hibernate学习笔记

Hibernate 学习笔记2010年7月9日星期五1目录1.学习纲要2.学习目的3.达标标准4.名词解释5.学习时间:两天又3小时(16~19pm)2具体内容2.1学习纲要2.1.1什么是hibernate?它是连接JAVA应用程序和关系数据库的中间件它对JDBC API进行了封装,负责JAVA对象的持久化在分层的软件架构中它位于持久化层,封装了所有数据访问细节,使业务逻辑层可以专注于实现业务逻辑。

它是一种ORM映射工具,能够建立面向对象的域模型和关系数据模型之间的映射2.1.2HIBERNATE原理依赖的技术有:JAVA反射机制(在org.hibernate.property中得到较多应用,通过INVORK()方法调用POJO对象的setter,getter方法设置和获取属性的值)i.Class类ii.getMethods方法得到Method类iii.Method类iv.invoke方法用来调用被反射类的方法CGLIB(用于对持久化类进行延迟加载时生成代理类)i.以asm项目为基础,对asm的功能进行封装和扩展,实现并扩展了JAVA的反射功能,可以在运行时状态下实现JAVA接口,扩展JAVA类ii.Asm项目是一个简洁的字节码工具,能够在运行的状态下动态的修改编译完成的JAVA类JAVASSIST(同CGLIB,是另一套解决方案,可以通过修改org.hibernate.cfg.Environment.java原码进行设置)i.是一个执行字节码操作的强有力的驱动代码库。

它允许开发者在代码被JAVA虚拟机载入之前定义一个新类或者修改类的的原代码。

XML技术(DOM4J)i.用来解析XML配置文件Antlr(another tool for language recognition)i.它是一个开源的工具,利用后缀为“.g”的文件来定义语法规则ii.Hibernate提供的语法规则有iii.Hql.giv.Hql-sql.gv.Sql-gen.gvi.Hibernate通过调用这些生成的解析类完成把HQL语句转为SQL语句的工作2.1.3HIBERNATE方法的内部实现略2.1.4Hibernate能做什么?2.1.5hibernate应用在哪些方面2.1.6Hibernate关联关系1.一对多关联<many-to-one name=”customer”column=”CUSTOMER_ID”class=”mypack.Customer”lazy=”false” not-null=”true”/>此种情况下不会加载关联的临时对象。

Hibernate_学习笔记

Hibernate_学习笔记

Hibernate -annotation 学习笔记---wjt276[2010-01-18完]目录第1课课程内容 (6)第2课 Hibernate UML图 (6)第3课风格 (7)第4课资源 (7)第5课环境准备 (7)第6课第一个示例Hibernate HelloWorld (7)第7课建立Annotation版本的HellWorld (9)第8课什么是O/R Mapping (11)一、定义: (11)二、Hibernate的创始人: (12)三、Hibernate做什么: (12)四、Hibernate存在的原因: (12)五、Hibernate的优缺点: (13)六、Hibernate使用范围: (13)第9课 Hibernate的重点学习:Hibernate的对象关系映射 (13)一、对象---关系映射模式 (13)二、常用的O/R映射框架: (13)第10课模拟Hibernate原理(OR模拟) (13)一、项目名称 (14)二、原代码 (14)第11课 Hibernate基础配置 (15)一、提纲 (15)二、介绍MYSQL的图形化客户端 (16)三、Hibernate.cfg.xml:hbm2ddl.auto (16)四、搭建日志环境并配置显示DDL语句 (16)五、搭建Junit环境 (17)六、ehibernate.cfg.xml : show_sql (17)七、hibernate.cfg.xml :format_sql (17)八、表名和类名不同,对表名进行配置 (18)九、字段名和属性相同 (18)十、字段名和属性名不同 (18)十一、不需要(持久化)psersistence的字段 (19)十二、映射日期与时间类型,指定时间精度 (19)十三、映射枚举类型 (19)第12课使用hibernate工具类将对象模型生成关系模型 (20)第13课 ID主键生成策略 (20)一、Xml方式 (20)<generator>元素(主键生成策略) (21)二、annotateon方式 (22)1、AUTO默认 (22)2、IDENTITY (23)3、SEQUENCE (23)4、为Oracle指定定义的Sequence (23)5、TABLE - 使用表保存id值 (24)三、联合主键 (25)1、xml方式 (25)2、annotation方式 (28)第14课 Hibernate核心开发接口(重点) (30)一、Configuration(AnnotationConfiguration) (30)二、SessionFactory (30)三、Session (31)1、管理一个数据库的任务单元 (31)2、save(); (31)3、delete() (31)4、load() (31)5、Get() (32)6、load()与get()区别 (33)7、update() (33)8、saveOrUpdate() (34)9、clear() (34)10、flush() (34)11、evict() (35)第15课持久化对象的三种状态 (36)一、瞬时对象(Transient Object): (36)二、持久化对象(Persistent Object): (36)三、离线对象(Detached Object): (36)四、三种状态的区分: (37)五、总结: (37)第16课关系映射(重点) (37)一、一对一关联映射 (37)(一) 唯一外键关联-单向(unilateralism) (38)(二) 唯一外键关联-双向 (41)(三) 主键关联-单向(不重要) (43)(四) 主键关联-双向(不重要) (45)(五) 联合主键关联(Annotation方式) (46)二、component(组件)关联映射 (47)(一) Component关联映射: (47)(二) User实体类: (47)(三) Contact值对象: (48)(四) xml--User映射文件(组件映射): (48)(五) annotateon注解 (48)(六) 导出数据库输出SQL语句: (49)(七) 数据表结构: (49)(八) 组件映射数据保存: (49)三、多对一–单向 (50)(一) 对象模型图: (50)(二) 关系模型: (50)(三) 关联映射的本质: (50)(四) 实体类 (50)(五) xml方式:映射文件: (51)(六) annotation (52)(七) 多对一存储(先存储group(对象持久化状态后,再保存user)): (52)(八) 重要属性-cascade(级联): (53)(九) 多对一加载数据 (53)四、一对多 - 单向 (54)(一) 对象模型: (54)(二) 关系模型: (54)(三) 多对一、一对多的区别: (54)(四) 实体类 (54)(五) xml方式:映射 (55)(六) annotateon注解 (55)(七) 导出至数据库(hbm ddl)生成的SQL语句: (56)(八) 一对多单向存储实例: (56)(九) 生成的SQL语句: (56)(十) 一对多,在一的一端维护关系的缺点: (56)(十一) 一对多单向数据加载: (56)(十二) 加载生成SQL语句: (57)五、一对多 - 双向 (57)(一) xml方式:映射 (57)(二) annotateon方式注解 (58)(三) 数据保存: (58)(四) 关于inverse属性: (59)(五) Inverse和cascade区别: (59)(六) 一对多双向关联映射总结: (59)六、多对多 - 单向 (59)(一) 实例场景: (59)(二) 对象模型: (59)(三) 关系模型: (59)(四) 实体类 (60)(五) xml方式:映射 (60)(六) annotation注解方式 (61)(七) 生成SQL语句 (61)(八) 数据库表及结构: (61)(九) 多对多关联映射单向数据存储: (62)(十) 多对多关联映射单向数据加载: (63)七、多对多 - 双向 (64)(一) xml方式:映射 (64)(二) annotation注解方式 (64)八、关联关系中的CRUD_Cascade_Fetch (66)九、集合映射 (68)十、继承关联映射 (68)(一) 继承关联映射的分类: (68)(二) 对象模型: (69)(三) 单表继承SINGLE_TABLE: (69)(四) 具体表继承JOINED: (75)(五) 类表继承TABLE_PER_CLASS (76)(六) 三种继承关联映射的区别: (79)第17课 hibernate树形结构(重点) (80)一、节点实体类: (80)二、xml方式:映射文件: (80)三、annotation注解 (81)四、测试代码: (81)五、相应的类代码: (81)第18课作业-学生、课程、分数的映射关系 (84)一、设计 (84)二、代码: (84)三、注意 (85)第19课 Hibernate查询(Query Language) (85)一、Hibernate可以使用的查询语言 (85)二、实例一 (85)三、实体一测试代码: (87)四、实例二 (91)五、实例二测试代码 (92)第20课 Query by Criteria(QBC) (94)一、实体代码: (95)二、Restrictions用法 (95)三、工具类Order提供设置排序方式 (96)四、工具类Projections提供对查询结果进行统计与分组操作 (97)五、QBC分页查询 (97)六、QBC复合查询 (97)七、QBC离线查询 (98)第21课 Query By Example(QBE) (98)一、实例代码 (98)第22课 Query.list与query.iterate(不太重要) (98)一、query.iterate查询数据 (98)二、query.list()和query.iterate()的区别 (99)三、两次query.list() (100)第23课性能优化策略 (100)第24课 hibernate缓存 (100)一、Session级缓存(一级缓存) (100)二、二级缓存 (101)1、二级缓存的配置和使用: (101)2、二级缓存的开启: (102)3、指定二级缓存产品提供商: (102)4、使用二级缓存 (102)5、应用范围 (105)6、二级缓存的管理: (105)7、二级缓存的交互 (106)8、总结 (107)三、查询缓存 (108)四、缓存算法 (109)第25课事务并发处理 (109)一、数据库的隔离级别:并发性作用。

租房系统的实验报告

租房系统的实验报告

一、实验目的1. 熟悉Java编程语言,掌握面向对象编程思想。

2. 学习使用Java Swing进行图形用户界面设计。

3. 理解数据库设计,实现租房信息管理系统的基本功能。

二、实验环境1. 操作系统:Windows 102. 开发工具:Eclipse IDE3. 编程语言:Java4. 数据库:MySQL三、实验内容1. 系统需求分析2. 系统设计3. 系统实现4. 系统测试四、实验步骤1. 系统需求分析(1)用户角色:管理员、房东、租客(2)功能模块:房源管理、用户管理、租赁管理、系统设置(3)系统界面:采用Java Swing进行设计,简洁、易用2. 系统设计(1)数据库设计设计租房系统数据库,包含以下表:- 用户表(user)- 用户ID(主键) - 用户名- 密码- 角色ID(外键)- 角色表(role)- 角色ID(主键) - 角色名称- 房源表(house)- 房源ID(主键) - 房源名称- 房源地址- 房源类型- 房源面积- 房源租金- 房东ID(外键)- 租赁表(rent)- 租赁ID(主键) - 房源ID(外键) - 租客ID(外键) - 租赁开始时间- 租赁结束时间- 房东表(landlord) - 房东ID(主键)- 房东姓名- 房东电话- 房东地址- 租客表(tenant)- 租客ID(主键)- 租客姓名- 租客电话- 租客地址(2)系统架构设计采用分层架构,分为表现层、业务逻辑层和数据访问层。

- 表现层:使用Java Swing进行界面设计,负责与用户交互。

- 业务逻辑层:负责处理业务逻辑,如房源租赁、用户管理等。

- 数据访问层:负责与数据库交互,实现数据的增删改查。

3. 系统实现(1)数据库连接使用JDBC连接MySQL数据库,实现数据的增删改查。

(2)界面设计使用Java Swing设计系统界面,包括登录界面、主界面、房源管理、用户管理、租赁管理、系统设置等。

(3)功能实现实现房源管理、用户管理、租赁管理、系统设置等模块的功能。

Linux下基于Struts、Hibernate和Spring的房产网站自动生成技术的研究与实现

Linux下基于Struts、Hibernate和Spring的房产网站自动生成技术的研究与实现

因为 fdr eoa自带 的 Frfx与 My c pe i o e E l s 有冲突 , i 导致 E l s cpe i
找不 到 x lmn r ur e 的环 境而不 能启 动 ,可采 用解 决 方法 : t 在
mycis.n el e ii文 件 后 加 上 D r. cpe s .rw e. U p og el s.wtbo srX L i R n e a =uri/ l n e-. . . , 常运 行 界 面如 图 2 u nr t /s1 x r n r 9 14 正 Ph /b un 1 :
大众 化 需 求 。 因此 , 些 是 必 需 解 决 的 问题 , 产 信 息发 布 自 这 房 动 生 成 器 , 为 类 似 问 题 提 供 了 一 个 比较 完 善 的 解 决 方 案 , 并 且移 植 性 强 , 加 更 改 便 能 运 用 于 其 它 系 统 。 稍 2 技 术 实 现 .
g的 房产 网站
需 求 的 房 产 信 息 系统 的 总 体 设 计 ,
计 有 较 好 的 实用 性 , 架 的 整 合 使 框
整 合 在 一 起 , 所 有 的类 看 作 B a 将 en来 进 行 管 理 , 体 组 合 框 具
1 引 言 .
架 如图 1 。
在 项 目实 践 中 , 者 发 现 传 统 的 手 工 制 作 we 息 发 布 笔 b信 模 式 呈 现 出 一 些 明显 的 不 足 , 主 要 的有 以下 几 点 :1 页 最 ()网
l / os a i t l.jr bo
E p rJ x o t AVA HO M E AV A BI P J N AT CL H AS P S AT H
_

hibernate02笔记

hibernate02笔记

提问:1. Hibernate与ORM 关系2. Hibenate开发步骤、执行流程3. Hibernate 中方言作用4. 映射文件起什么作用?5. 如何进行联合主键映射?<composite-id>执行流程1. 创建Configuration对象2. 加载主配置文件:hibernate.cfg.xml3. 接着,创建SessionFactory对象4. 创建Session5. 开启事务6. –执行操作–7. 提交/关闭目标:1. hibernate对象状态2. hibenate 一级缓存3. 集合映射/多对一/一对多映射1. hibernate对象状态session.save(对象);(一)临时状态1 . 直接new出来的对象2. 不处于session的管理(即没有与任何一个session关联)3. 对象在数据库中没有对应的记录!Employee e = new Employee();e.setId(2); 只要主键在数据库中存在,就说这个对象在数据库中有对应记录!在数据库中叫主键!OID, object identified 对象的唯一标识(对应数据库中的主键)(二)持久化状态1. 处于session的管理范围当执行session的方法如:save/update/saveOrUpdate/get/load对象就会自动转变为持久化状态!2. 在数据库中有对应的记录3. 处于持久化状态的对象,当对对象属性进行更改的时候,提交事务更改会反映到数据库中!(三)游离状态1. 对象不处于session的管理范围;通常指session关闭后对象的状态2. 对象在数据库中有对应的记录2. Session缓存概念:Session缓存,也叫做一级缓存!当执行session的相关方法,如: save()/update()/get()/load()等方法的时候,对象会自动放入一级缓存中。

当Session关闭后,一级缓存内容失效!特点:1)缓存有效范围,只在当前session范围内有效!缓存时间很短、作用范围小!2)一级缓存,可以在短时间内多次操作数据库的时候,才会明显提升效率!一级缓存的结构:Ma<主键,对象>3)在提交事务时候,Hibernate会同步缓存数据到数据库中,会对比缓存数据与数据库数据是否一致,如果不一致,才提交更改到数据库(生成update)!4) hibernate提供的一级缓存有hibernate自身维护,如果想操作一级缓存内容,必须通过hibernate提供的方法;session.flush(); 手动让让一级缓存内容与数据库同步session.evict(emp1); 清空一级缓存中对象: 清除指定的对象session.clear(); 清空一级缓存中对象: 清除所有的对象list()与iterator()查询区别list: (通常使用频率较高)Query接口定义的list查询方法,一次查询所有满足需要的数据!iterator:Query接口定义的iterator查询方法,1. 先查询所有满足条件记录的主键(查询1次)2. 再根据每一个id,进行主键查询,有多少记录,查询多少次(查询n次)3. iterator查询:N + 14. iterator查询,迭代数据的时候,只有用到数据的时候,才会查找数据库(懒加载)区别:1. 查询数据方式不同:查询全部与查询N+12. 一级缓存List查询,查询的结果会放入一级缓存,但不会从一级缓存中获取!Iteraotro查询,会放入一级缓存,同时也会从一级缓存中获取!3. lazy 属性Hibernate为了提升程序运行效率,提供了懒加载!lazy 属性表示懒加载!true 支持懒加载false 关闭懒加载extra (集合属性时候使用)懒加载:用到数据的时候,才向数据库发送查询的sql!(1) 主键查询:get/loadget:及时加载, 只要get就立刻查询数据库如果查询的主键不存在,返回nullLoad:懒加载,只有在用到数据的时候,才向数据库发送sql语句!如果查询的主键不存在,只要使用就报错!(2) 懒加载作用位置类级别,默认支持懒加载,但只有在使用load使用才会应用这个特性!字段级别,普通字段无效,大数据类型会有影响(long/longtext)集合属性,默认支持懒加载(3) 懒加载异常zyInitializationException: could not initialize proxy - no Session解决思路:在关闭后,不能能懒加载数据,那么就要求关闭前把懒加载使用的数据先查询出来!4.集合映射1. 需求:购物填写地址,一个用户,对应多个地址!2. 数据库设计:3. 设计javabean封装数据4. 写映射5. App.java 测试思考:集合映射,如果保存的数据只有一个可以使使用List/Set集合!如果保存的数据有2个,使用Map集合如果保存的数据是2个以上,集合元素类型,能否为对象?5.多对一、一对多映射需求:保存用户信息,用户对应的多个地址!周颖,年龄25, 广州天河,gzth,510000欧阳光,年龄25, 广州天河,gzth,510000用户与地址的关系:一对多【一个用户对应多个地址】地址与用户的关系多对一【多个地址对应一个用户】数据库设计:Javabean封装数据库数据:映射:App:多对一,实现目的:一对多,实现总结:一对多与多对一映射,可以只配置多对一,只能通过的多的一方维护关系!可以只配置一对多,只能通过一的一方维护关系双向配置:一对多与多对一, 可以通过双向维护关系!作业:一对多与多对一练习,需求自拟!-→用户与地址→用户与订单→老师与学员→部门/ 员工。

hibernate笔记

hibernate笔记

configuration.addClass(Customer.class);sf = configuration.buildSessionFactory();}(2)新增保存:save方法/**保存*/@Testpublic void save(){Session s = sf.openSession();Transaction tr = s.beginTransaction();Customer c = new Customer();c.setName("洪七公");c.setAge(60);c.setDes("帮助");s.save(c);mit();//实质上执行了2步操作,1:s.flush();//清理缓存,让session缓存中的数据与数据库同步,2:事务提交s.close();//Session的缓存就没有了}(3)更新:update方法/**更新*/@Testpublic void update(){Session s = sf.openSession();Transaction tr = s.beginTransaction();Customer c = new Customer();c.setId(3);c.setName("黄老邪");c.setAge(59);c.setDes("药师");s.update(c);mit();s.close();}(4)删除:delete方法@Testpublic void delete(){Session s = sf.openSession();Transaction tr = s.beginTransaction();Customer c = new Customer();c.setId(3);s.delete(c);mit();s.close();}(5)查询:get和load方法/**使用ID查询信息*/@Testpublic void findCustomerById(){Session s = sf.openSession();Transaction tr = s.beginTransaction();Customer c = (Customer) s.get(Customer.class, 2);System.out.println(c.getId()+" "+c.getName()+""+c.getAge()+" "+c.getDes());mit();s.close();}(6)查询:query查询(支持hql语句,sql语句,qbc语句)/**查询所有信息*/@Testpublic void findAllCustomerList(){Session s = sf.openSession();Transaction tr = s.beginTransaction();/**使用Hql语句:操作持久对象和属性* 复习sql语句:操作数据库表和数据库表的列*/Query query = s.createQuery("from Customer o");List<Customer> list = query.list();if(list!=null && list.size()>0){for(Customer c:list){System.out.println(c.getId()+" "+c.getName()+" "+c.getAge()+" "+c.getDes());}}mit();s.close();}●hibernate在内存地址中存在一个一级缓存,存在在一级缓存中的对象,就说明该对象具有了持久化的能力,如果对象具有持久化能力就能操作数据库。

hibernate学习笔记

hibernate学习笔记
18.无论是update还是get,都会首先查找缓存(一级缓存),如果没有,才会去数 据库里查找,调用clear()方法可以清除session缓存
19.flush():强制缓存与数据库同步
20.merge:合并 inverse:反转(true) cascade:级联(all)
21.关系映射:
2)不存在对应记录时表现不一样,get会返回null,load会抛出异常
16.merge:合并
17.update的用法:
1)用来更新detached对象,更新完状态转为persistent
2)更新transient对象会报错,除非自己设定id
3)persistent状态的对象只要设定不同字段就会发生更新(不用调update ()方法)
hibernate学习笔记
1.persist-->持久
PO-->Persistent Object:持久化对象
2.dialect:方言
3.factory:工厂
4.annotation:注释
5.assist-->辅助,帮助
Content assist--myeclipse不给提示
vii)一对多双向:两个PO都加对方对象引用
22.cascade:all/persist(存储)/remove(删除) 级联操作
写在保存的一方,例如要保存A的同时,把B也存进去,则在A的PO类 里加上@ManyToOne(cascade={CascadeType.ALL}),即在getB的属 性上加cascade
6.schema-->模式
7.@Transient--->短暂的,瞬变的,透明的
@Basic--->默认加上去的

基于Struts+Spring+Hibernate的租房系统开发

基于Struts+Spring+Hibernate的租房系统开发

基于Struts+Spring+Hibernate的租房系统开发
李红;古峰
【期刊名称】《数字技术与应用》
【年(卷),期】2011(000)007
【摘要】本文以租房系统项目为背景,通过对目前比较流行的框架开发技术struts、spring、hibernate的研究和分析,给出了系统的设计思路,详细论述了基于3种框
架的租房系统的构建,利用框架技术开发项目有效提高了项目代码的复用性及项目
开发的效率,并易于维护.
【总页数】1页(P140-140)
【作者】李红;古峰
【作者单位】齐齐哈尔工程学院信息工程系,黑龙江齐齐哈尔,161005;奇瑞汽车股
份有限公司信息技术部,安徽芜湖,241009
【正文语种】中文
【中图分类】TP31
【相关文献】
1.基于Struts+Spring+Hibernate框架的手机图书馆服务系统 [J], 丁夷;金永贤
2.基于Struts+Spring+Hibernate框架的图书借阅系统设计 [J], 曹异卿
3.基于Struts+Spring+Hibernate的租房系统开发 [J], 李红;古峰
4.Struts+Spring+Hibernate在OA系统开发中的应用 [J], 卢凯霞;程耕国
5.基于Struts+Spring+Hibernate缺陷管理系统实现 [J], 邹燕飞;罗鸿伟
因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章Hibernate入门本章技能目标理解持久化的概念理解ORM的概念了解Hibernate的基本原理学会编写实体映射文件学会使用hibernate完成数据增删改操作学会在项目中使用Hibernate本章单词Hibernate:对象关系映射框架。

Object:对象。

Relational:关系模型。

Mapping:映射。

Get:得到。

Load:加载。

Transient:瞬时。

Persistent:持久化。

Detached:分离本章简介对象——关系映射。

框架:hibernateHibernate 的优势是一个优秀的Java持久化层解决方案,主流的对象——关系映射工具。

简化了JDBC繁琐的编码。

Hibernate将数据库的连接信息都存放在配置文件中。

持久化与ORMORM(Object Relational Mapping ,对象关系映射).当程序退出后,这些数据就不复存在,所以,我们称这些数据的状态为瞬时的(Transient)有些数据,在程序退出后,还以文件等形式保存在存储设备中,我们称这些数据的状态是持久的(Persistent)在编写程序的时候,以面向对象的方式处理数据,保存数据的时候,却以关系型数据库的方式存储,所以,客观上我们需要一宗能在两者间进行转换的机制,这样的机制就是ORM(对象关系映射)准备Hibernate1.下载需要的jar包2.部署jar包3.创建Hibernate配置文件4.创建实体类和实体映射文件Hibernate.cfg.xml配置内容:Dialect:参数:用于配置Hibernate使用的不同数据库类型。

Connection.dirver_class参数:表示数据库驱动。

ername参数:表示数据库用户名。

Connection.password参数:表示数据库用户秘密。

Connection.url参数:表示数据库URL。

Current_session_context_class参数:指定当前Session范围和上下文。

Show_sql参数:参数为true,则程序运行时在控制台输出SQL语句。

配置好Hibernate的配置文件,就要实现数据库表和实体对象之间的映射,映射信息在映射文件中。

<mapping resource="cn/jbit/houserent/entity/User.hbm.xml" />一个实体类到数据库表??(表名)映射的配置,???.hbm.xml其中各元素的含义如下:Class元素:定义一个实体类的映射信息常用属性如下:Name表示对象实体类的全限定名。

Table表示对应的数据库表名。

Id元素:定义该属性到数据库表主键字段的映射。

常用属性如下:Name表示实体类属性的名字。

Type表示实体类属性的类型。

Column表示数据库表字段的名字,也可在子元素column 指定。

Generator元素:id元素的子元素用于指定主键的生成策略。

常用属性及子元素如下:Class用来指定具体主键生成策略。

Param元素用来传递参数。

常用主键的生成策略如下:increment,identity,native。

Property元素:定义实体类中属性和数据库中表的字段的对应关系。

常用属性如下:Name表示实体类属性的名字。

Type表示实体类属性的类型。

Column表示数据库表字段的名字,也可在子元素columnColumn元素:用于指定其父元素代表的实体类属性所对应的数据库表中的字段。

常用属性如下:Name表示字段的名字。

Length表示字段长度。

Not-null设定是否可以为null,值为true表示不能为null。

使用Hibernate操作数据库1.读取并解析配置文件利用classpath中的默认配置文件构建Configuration实例Configuration conf=newConfiguration().configure();2.读取并解析映射信息,创建SessionFactory SessionFactory sf=conf.buildSessionFactory();3.打开Session。

Session session=sf.openSession();4.开始一个事务。

Transaction tx=session.begintransaction();5.数据库操作。

Session.save(user);6.提交事务。

mit(),7.关闭session。

Session.close();HibernateUtil类的编写Private static Configuration configuration;Private final static SessionFactory sessionFactory;Static{Try{Configuration=new Configuration();Configuration.configure();sessionFactory=configuration.buildSessionFactory();}catch(Exception e){e.p....}}Public static Configuration getConfiguration(){Return configuration;}Public static SessionFactory getSessionFactory(){Return sessionFactory;}Public static Session getSession(){Return getSessionFactory().getCurrentSession();}使用hibernate实现数据库的增删改操作。

Session.save(user);Session.delete(.....);使用hibernate实现对数据库的查询操作Object get(Class clazz,Serializable id);通过实体类class对象和ID加载数据Object load(Class clazz,Serializable id);通过实体类Class对象和ID加载数据。

提问:1.举例说明什么是持久化?2.以实例说明什么是,对象——关系映射?3.通过与JDBC类比的方式简述使用hibernate的几个步骤?第2章Hibernate关联映射本章技能目标1.掌握many-to-one关联2.掌握one-to-many关联3.掌握many-to-many关联本章单词District:地区;street:街道。

Lazy:延迟。

Fetch:取。

Cascade:级联。

Inverse:反转。

employee:雇员。

Project:项目。

本章简介怎样映射面向对象领域的关联关系和数据库关系模型中的外键关联。

这是本章的重点。

第三章HQL使用技术1.掌握HQL数据查询技术2.掌握HQL实体查询3.掌握HQL属性查询4.掌握HQL参数绑定5.使用HQL实现查询排序6.使用HQL实现查询分组7.使用HQL实现查询分页本章单词Query:查询。

Language:语言。

Dialect:方言。

Title:标题。

Floorage:建筑面积。

Group:组。

Order:排序。

Scrollable:滚动本章简介HQL(Hibernate Query Language ,Hibernate查询语言)HQL是一种面向对象的查询语言,其中没有表和字段的概念,只有类,对象和属性的概念。

如何使用HQL使用HQL需要四步。

得到Session 。

编写HQL语句。

创建Query对象。

执行查询,得到结果。

1.得到Session:Session session=sessionFactory.openSession();2.编写HQL语句:String hql="from Street";3.创建Query对象:Query query=session.createQuery(hql);4.执行查询,得到结果:List<Street> list=query.list();For(Street street:list){System.out.println(street.get....);}其中Street并非表名,而是实体类名。

也可以写成from cn.jbit.houserent.bean.Street。

其实List对象中实际保存的事Street对象。

在很多时候可能需要为类设置别名。

属性查询有时我们并不需要获取完整的实体对象。

也就是需要的数据只是实体对象的某个属性。

String hql="select user.password from User as user where ='admin'";Query query=session.createQuery(hql);List list=query.list();Iterator it=list,iterator();If(it.hasNext){System.out.println(it.next());我们也可以获得多个属性。

String hql="select user.telephone ,ername from User as user where ='admin'";Query query=session.createQuery(hql);List list=query.list();Iterator it=list.Iterator();If(it.hasNext){Object[] object=(Object[])it.next();......}可以通过在HQL中动态构造对象实例的方法。

Select new User(user.password,ername) from User as user;这样返回的List对象中将保存user 对象。

但必须在User类中增加一个以telephone和username属性为参数的构造方法。

参数绑定?占位符String hql="select user.password from User as user where =?";Query query=session.createQuery(hql);query.setStrint(0,"admin");命名参数String hql="select user.password from User as user where =:name";Query query=session.createQuery(hql);query.setStrint("name","admin");封装参数实现动态设置查询参数,那就是将参数封装为一个bean,然后通过Query对象的setProperties(object bean)实现参数的设定。

相关文档
最新文档