文档库 最新最全的文档下载
当前位置:文档库 › hibernate培训笔记

hibernate培训笔记

hibernate培训笔记
hibernate培训笔记

Hibernate培训教程

作者:刘会军(jfmind@https://www.wendangku.net/doc/e215185313.html,)

2006年11月17日

hibernate简史 (3)

标准方面 (3)

ORM(object relational mapping) (3)

成功之道 (3)

何为hibernate (4)

持久层设计 (4)

持久层概念 (4)

ORM(object relational mapper)对象-关系型数据映射组件 (5)

设计模式 (5)

资源管理模式 (5)

解藕合设计 (6)

体系结构 (7)

概况 (7)

实例状态 (8)

O/R映射 (9)

basic o/r mapping (9)

集合类映射 (10)

关联关系映射 (10)

组件映射 (10)

继承映射 (10)

核心接口 (10)

分类 (10)

详解 (11)

数据检索 (13)

Hibernate Query Language (HQL) (13)

Criteria queries (QBC) (13)

Native SQL queries (14)

开发 (14)

基本配置 (14)

高级配置 (16)

hibernate最佳实践 (16)

参考 (16)

hibernate简史

hibernate是在JDBC之上提供一层薄薄的封装,在提供完全透明的持久化机制的同时又提供尽可能多的灵活性。相比之ibatis则是面向“语句映射”的层面,使用SQL作为查询语言。

标准方面

J2EE提供了两个持久化的手段:JDBC,它是J2SE中访问关系数据库系统的标准API,然而却以一种错误的编程模型来强制开发者用java代码来处理关系思想;另一个是实体Beans ,它是EJB中专门模型化持久化实体的组件,一是不能处理持久对象间的关系,二是使用了糟糕的查询语言,三是难于测试。

ORM(object relational mapping)

由于J2EE持久化标准对于处理对象与关系的尴尬,而且持久化问题的解决方案是由关系-对象映射(ORM)来解决的,它可以透明地持久化普通java对象(POJO)。因此,ORM框架悠然而生。

1990年,一些商业的ORM工具就出现了,比如TopLink。但由于其价格昂贵、结构复杂并且与Sun的实体bean标准相左,所以很少人会用。

2001年,JDO(java data object)在Java Community Progress(https://www.wendangku.net/doc/e215185313.html,)的规范中出现。因其试图建立一个完整的持久层框架,追求标准化陷入僵局;标准很不完善,存在重大缺陷,产品分裂, 也没有一个好的开源免费实现,也没有能够流行。

2001年末,hibernate第一个正式版本对外发布,赢得了开源社区的一片赞誉。

2003年6月8日,hibernate 2的发布,奠定了成功的基石。开始进入国内开发人员视野。

2003年末,hibernate获得了Jolt 2004大奖以及被jboss收购,确立了hibernate在java orm架构中的主导地位,ORM工业标准。

2005年3月,hibernate 3正式发布。

成功之道

●快速发布,即时响应

●全面的回归测式

●追求卓越

●避免过度设计

●集权

●文档

●避免标准化

●10分钟之内把Hibernate跑起来

●开发人员的责任感

●易用的、可更新的wiki网页

何为hibernate

创建一份XML“映射文档”,告诉Hibernate您希望能够保存在数据库中的类,以及它们如何关联到该数据库中的表和列,然后就可以要求它以对象的形式获取数据,或者把对象保存为数据。运行时,Hibernate读取映射文档,然后动态构建Java类,以便管理数据库与Java之间的转换。在Hibernate中有一个简单而直观的API,用于对数据库所表示的对象执行查询。要修改这些对象,(一般情况下)只需在程序中与它们进行交互,然后告诉Hibernate保存修改即可。类似地,创建新对象也很简单;只需以常规方式创建它们,然后告诉Hibernate 有关它们的信息,这样就能在数据库中保存它们。

持久层设计

持久层概念

专注于实现持久化的一个相对独立的领域,可以通过一个简单的逻辑图表达。

ORM(object relational mapper)对象-关系型数据映射组件优点:

●减少乏味的代码

●更加面向对象的设计

●更好的性能

●更好的移植性

缺点:

●粒度问题granularity

●子类型问题subtypes

●同一性问题identity

●关联问题associations

●对象导航问题navigation

设计模式

●工厂模式factory

●代理模式proxy

●decorator模式

●dynamic proxy模式

资源管理模式

A.DAO(data access object)模式

I.DAO模式的实现层次:

●data accessor模式

实现数据访问与业务逻辑分离,将数据访问的实现机制加以封装,与数据的使用代码加以分离,从外部来看,data accessor提供了黑盒式的数据存取接口。

●active domain object模式

实现业务数据的对象化封装

II.优点

●数据存储逻辑分离

●数据访问底层分离

●资源管理和调度分离

●数据抽象

B.数据库连接池connection pool

基本原理:在内部对象池中维护一定数量的数据库连接,对外暴露数据库连接获取和返回方法。

优点:

●资源重用

●更快的响应速度

●新的资源分配手段

●统一的连接管理,避免数据库连接泄漏

解藕合设计

●应用层:应用逻辑与数据逻辑分离

资源层:逻辑结构与物理结构分离

体系结构

概况

A.一个非常重要的hibernate体系结构概要图:

可以看出,hibernate是使用数据库和配置信息为应用程序提供服务(以及持久化对象)。

B. 轻型体系结构图

C. 体系结构方案

实例状态

一个持久化类的实例可能处于三种不同状态中的某一种,这三种状态的定义则与所谓的持久化上下文(persistence context)有关。hibernate的session 对象就是这个所谓的持久化上下文:

●瞬态(transient)

该实例从未与任何持久化上下文关联过,它没有持久化标识(相当于主键值)。

●持久化(persistent)

实例目前与某个持久化上下文有关联,它拥有持久化标识,并且可能在数据库中有一个对应的行,对于某一个特定的持久化上下文,hibernate保证持久化标识与java标识等价。

●脱管(detached)

实例曾经与某个持久化上下文发生过关联,不过那个上下文被关闭了,或者这个实例是被序列化到另外的进程。它拥有持久化标识,并且在数据库中可能存在一个对应的行。对于脱管状态的实例,hibernate不保证任何持久化标识和java标识的关系。

持久化对象的生命周期(lifecycle):

O/R映射

basic o/r mapping

i.映射定义(mapping declaration)

以java为中心的映射语言,易读,可手工修改的xml文档。是按持久化的类定义创建而非数据库中的表。

ii.hibernate类型

iii.

集合类映射

关联关系映射

组件映射

继承映射

核心接口

分类

显示的接口可以近似地分为如下几类:

■由应用调用以完成基本的CRUD和查询操作的接口。这些接口是应用的业务/控制逻辑对Hibernate的主要的依赖点。它们包括Session,

Transaction和Query。

(

Interfaces called by applications to perform basic CRUD and querying operations. These interfaces are the main point of dependency of application business/control logic on Hibernate. They include Session, Transaction, and Query.

)

■由应用的底层代码调用以配置Hibernate的接口,最重要的是Configuration类。

(

Interfaces called by application infrastructure code to configure

Hibernate, most importantly the Configuration class.

)

■允许应用对Hibernate内部出现的事件进行处理的回调接口,例如Interceptor,Lifecycle和Validatable接口。

(

Callback interfaces that allow the application to react to events occurring inside Hibernate, such as Interceptor, Lifecycle, and Validatable.

)

■允许对Hibernate强大的映射功能进行扩展的接口,例如UserType ,CompositeUserType和IdentifierGenerator。这些接口由应用的底层代码实现(如果需要的话)。

(

Interfaces that allow extension of Hibernate’s powerful mapping functionality, such as UserType, CompositeUserType, and IdentifierGenerator. These interfaces are implemented by application infrastructure code (if necessary).

)

详解

Configuration

正如其名,Configuration 类负责管理Hibernate 的配置信息。Hibernate 运行时需要

获取一些底层实现的基本信息,其中几个关键属性包括:

1、数据库URL

2、数据库用户

3、数据库用户密码

4、数据库JDBC驱动类

1、数据库dialect,用于对特定数据库提供支持,其中包含了针对特定数据库

特性的实现,如Hibernate数据类型到特定数据库数据类型的映射等。

当然,还有指定Hibernate映射文件的位置。(*.hbm.xml)。

Hibernate配置有两种方法:

一、属性文件配置。默认文件名是hibernate.properties。调用代码:

Configuration config = new Configuration();

二、XML文件配置。默认文件名是hibernate.cfg.xml。

Configuration config = new Configuration().configure();

SessionFactory:应用程序从SessionFactory(会话工厂)里获得Session(会话)实例。它打算在多个应用线程间进行共享。通常情况下,整个应用只有唯一的一个会话工厂——例如在应用初始化时被创建。然而,如果你使用Hibernate 访问多个数据库,你需要对每一个数据库使用一个会话工厂。

会话工厂缓存了生成的SQL语句和Hibernate在运行时使用的映射元数据。

它也保存了在一个工作单元中读入的数据并且可能在以后的工作单元中被重用

(只有类和集合映射指定了使用这种二级缓存时才会如此)。

SessionFactory sessionFactory = config.buildSessionFactory();

Session(会话):该接口是Hibernate使用最多的接口。Session不是线程安全

的,它代表与数据库之间的一次操作。Session通过SessionFactory打开,在

所有的工作完成后,需要关闭:它的概念介于Connection和Transaction之间。

我们可以简单的认为它是已经装载对象的缓存或集合的一个独立工作单元。我们

有时也称Session为持久化管理器,因为它是与持久化有关的操作的接口。

Hibernate会话并不是线程安全的因此应该被设计为每次只能在一个线程中

使用。Hibernate会话与Web层的HttpSession没有任何关系。

Session session = sessionFactory.openSession();

Transaction:事务将应用代码从底层的事务实现中抽象出来——这可能是一个

JDBC事务,一个JTA用户事务或者甚至是一个公共对象请求代理结构(CORBA)

——允许应用通过一组一致的API控制事务边界。这有助于保持Hibernate应用

在不同类型的执行环境或容器中的可移植性。

Transaction trans = session.beginTransaction ();

Query: Query(查询)接口允许你在数据库上执行查询并控制查询如何执行。查

询语句使用HQL或者本地数据库的SQL方言编写。

Query query = session.createQuery(“from User”);

Lifecycle:Lifecycle接口提供了一些回调方法,可以让持久化对象在save或

load之后,或者在delete或update之前进行必要的初始化与清除步骤。

public interface Lifecycle {

public boolean onSave(Session s) throws CallbackException;

(1)

public boolean onUpdate(Session s) throws CallbackException; (2)

public boolean onDelete(Session s) throws CallbackException; (3)

public void onLoad(Session s, Serializable id);

(4)

}

(1) onSave - 在对象即将被save或者insert的时候回调

(2) onUpdate - 在对象即将被update的时候回调(也就是对象被传递给

Session.update()的时候)

(3) onDelete - 在对象即将被delete(删除)的时候回调

(4) onLoad - 在对象刚刚被load(装载)后的时候回调

Validatable: 该接口是合法性检查的回调。如果持久化类需要在保存其持久化

状态前进行合法性检查,它可以实现下面的接口:

public interface Validatable {

public void validate() throws ValidationFailure;

}

如果发现对象违反了某条规则,应该抛出一个ValidationFailure异常。在

Validatable实例的validate()方法内部不应该改变它的状态。

和Lifecycle接口的回调方法不同,validate()可能在任何时间被调用。应用程序不应该把validate()调用和商业功能联系起来。

Interceptor: Interceptor接口提供从session到你的应用程序的回调方法,让你的程序可以观察和在持久化对象保存/更改/删除或者装载的时候操作它的属性。一种可能的用途是用来监视统计信息。比如,下面的Interceptor会自动在一个Auditable创建的时候设置其createTimestamp,并且当它被更改的时候,设置其lastUpdateTimestamp属性。

UserType: 开发者创建属于他们自己的值类型也是很容易的。比如说,你可能希望持久化https://www.wendangku.net/doc/e215185313.html,ng.BigInteger类型的属性,持久化成为VARCHAR字段。Hibernate没有内置这样一种类型。自定义类型能够映射一个属性(或集合元素)到不止一个数据库表字段。比如说,你可能有这样的Java属性:getName()/setName(),这是https://www.wendangku.net/doc/e215185313.html,ng.String类型的,对应的持久化到三个字段:FIRST_NAME, INITIAL, SURNAME。要实现一个自定义类型,可以实现https://www.wendangku.net/doc/e215185313.html,erType或https://www.wendangku.net/doc/e215185313.html,positeUserType中的任一个,并且使用类型的Java全限定类名来声明属性。请查看net.sf.hibernate.test.DoubleStringType这个例子,看看它是怎么做的。

注意使用标签来把一个属性映射到多个字段的做法。

数据检索

Hibernate Query Language (HQL)

object-oriented dialect of ANSI SQL

Criteria queries (QBC)

extensible framework for query objects

includes Query By Example (QBC)

detachedCriteria

Native SQL queries

direct passthrough with automatic mapping

named SQL queries in metadata

开发

基于B/S的典型三层架构:

基本配置

Managed environment—Pools resources such as database connections and allows transaction boundaries and security to be specified declaratively (that is, in metadata). A J2EE application server such as JBoss, BEA WebLogic, or IBM WebSphere implements the standard (J2EE-specific) managed environment for Java.

Jdbc connection pooling in a non-managed environment

Hibernate with a connection pool in a non-managed environment

Non-managed environment—Provides basic concurrency management via thread pooling. A servlet container like Jetty or Tomcat

provides a non-managed server environment for Java web

applications. A stand-alone desktop or command-line

application is also considered non-managed. Non-managed

environments don’t provide automat ic transaction or resource

management or security infrastructure. The application itself

manages database connections and demarcates transaction

boundaries.

Hibernate in a managed environment with an application server

高级配置

hibernate最佳实践

参考

《hibernate in action》《hibernate reference》《深入浅出hibernate》

初中英语语法——三大从句汇总(重点笔记)

初中英语语法——三大从句汇总 在英语中,主要有三大从句,即名词性从句(包括主语从句,宾语从句,表语从句,同位语从句)、形容词性从句(即定语从句)、副词性从句(即 状语从句,包括时间、条件、结果、目的、原因、让步、地点、方式等)。以 下是一些基本的从句的语法知识点 A、定语从句专项讲解与训练 一、定语从句概念 定语从句(attributive clause),顾名思义,就是一个句子作定语从属 于主句。定语一般是由形容词充当,所以定语从句又称作形容词从句。另外, 定语从句是由关系代词或关系副词引导的,故又称作关系从句。 定语从句一般放在它所修饰的名词或代词之后,这种名词或代词被称作先 行词。请看示例: The woman who lives next door is a teacher. 先行词定语从句 在所有的从句中,算定语从句最难掌握,因为汉语里没有定语从句,汉语 里只有定语,而且总是放在名词之前来修饰名词。 二、关系代词引导的定语从句 关系代词代替前面的先行词,并且在定语从句中充当句子成分,可以作主语、宾语、定语等。常见的关系代词有:who, that, which。它们的主格、宾格和所有格如下表所示: 先行词主格宾格所有格 人 who whom whose 物 which which whose of which 人、物 that that — (一)关系代词who, whom和 whose的用法 who代替人,是主格,在定语从句中作主语。例如: An architect is a person who designs buildings. 建筑师是设计房屋的人。 I will never forget the teacher who taught us chemistry in the first

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产生的SQL语句) true (设置MySQL的SQL语法的方言) org.hibernate.dialect.MySQLDialect (设置MySQL的驱动程序) org.gjt.mm.mysql.Driver (设置MySQL的数据库路径、用户名、密码) jdbc:mysql:///java root lizhiwei (设置当数据库要保存的表不存在时,就新建表) update (设置对象与数据库表的关系映射文件) (3)此配置文件一般放在项目的src目录下。(注意:在项目中要加入MySQL的驱动jar包)3.编写实例类与对象-关系映射文件 (1)一个实例类对象就是数据库表里的一条记录,关系映射文件就指明了类的成员变量与数 据库字段间的关系以及该类对象保存在哪个表中。 (2)实例类User.java: public class User { private long id; private String name; private int age; private char sex; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { https://www.wendangku.net/doc/e215185313.html, = name; }

英语语法笔记.doc

直接引语与间接引语 引述别人的话语一般采用两种方式:⑴直接引述别人地原话,把它放在引号内,这叫直接引语;⑵用自己的话转述别人的话,这叫间接引语,间接引语相当于一个宾语从句。(一)主句为过去时态,直接引语变为间接引语时,时态要发生变化。 (二)人称在间接引语中的变化: 直接引语中的人称代词在转化为间接引语时,也要有相应地变化。一般遵循“一随主,二

(四)句子结构的变化: ①直接引语是陈述句,变为间接引语时,用连接词that(也可以省略),同时人称时态,时间状语,地点状语作相应变化。 [ I’ll telephone him this evening ] she said. 改后:she told me that she would telephone him that evening. Mr Black said [ I made the plan yesterday afternoon ]. 改后:Mr Black said that he had made the plan the previous afternoon. [ I am living here now. ] she said. 改后:She said that she was living there then. ②直接引语是一般疑问句,变为间接引语是,用whether/if 引导,疑问语序变为陈述语序,同时人称、时态、时间状语、地点状语作相应变化。谓语said通常变为asked。She asked Tom [ Are you going to Beijing next week? ] 改后:She asked Tom wether he was going to Beijing the next week. He asked us [ Can I stay here for another two days? ] 改后:He asked us if he could stay there for another two days. ③直接引语是特殊疑问句,变为间接引语时,用原来的疑问句引导,疑问语序变为陈述语序,同时人称,时态,时间状语,地点状语作相应变化。

Struts2+Hibernate开发笔记

Struts2 + Hibernate开发笔记(一) 由于开发任务紧张,因为这里的开发笔记,仅用于记录遇到的几个struts2和hibernate结合开发的现象.不对其做分析. 1. 在使用struts2时,页面和action之间的传值 这是struts2和struts1最大的区别. Struts2中,action和jsp页面之间的信息交互,是通过action中定义的成员变量来实现的. 例如,我在一个名为EstateAction的类中有如下定义 public class CityAction extends BaseAction { private MthCity mthCity ; private String cityName; private Long cityId private int couter; public String loadCity() throws DataAccessException, BaseException{ counter ++; return "city"; } } 然后,这里上面的类中的成员类MthCity的定义如下 public class MthCity implements java.io.Serializable { private Long cityId private String cityName; public MthCity() { public Long getCityId() { return this.cityId; } public void setCityId(Long cityId) { this.cityId = cityId; public String getCityName() { return this.cityName; } public void setCityName(String cityName) { this.cityName = cityName; } } 这是一个Hibatenate使用的数据对象POJO类. 有了这两个类后,我们来看看Struts2的Action和JSP页面之间是如何交互的 一. JSP -> Action Jsp页面 以下是一个jsp页面submit.jsp.这个页面只有一个功能,就是向struts提交申请 <%@ page language="java" contentType="text/html; charset=gbk"%> <%@ include file="/common/taglibs.jsp"%>

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

第一章Hibernate入门 本章技能目标 理解持久化的概念 理解ORM的概念 了解Hibernate的基本原理 学会编写实体映射文件 学会使用hibernate完成数据增删改操作 学会在项目中使用Hibernate 本章单词 Hibernate:对象关系映射框架。Object:对象。Relational:关系模型。Mapping:映射。Get:得到。Load:加载。Transient:瞬时。Persistent:持久化。Detached:分离 本章简介 对象——关系映射。框架:hibernate Hibernate 的优势 是一个优秀的Java持久化层解决方案,主流的对象——关系映射工具。简化了JDBC繁琐的编码。Hibernate将数据库的连接信息都存放在配置文件中。 持久化与ORM ORM(Object Relational Mapping ,对象关系映射). 当程序退出后,这些数据就不复存在,所以,我们称这些数据的状态为瞬时的(Transient) 有些数据,在程序退出后,还以文件等形式保存在存储设备中,我们称这些数据的状态是持久的(Persistent) 在编写程序的时候,以面向对象的方式处理数据,保存数据的时候,却以关系型数据库的方式存储,所以,客观上我们需要一宗能在两者间进行转换的机制,这样的机制就是ORM(对象关系映射) 准备Hibernate 1.下载需要的jar包 2.部署jar包 3.创建Hibernate配置文件 4.创建实体类和实体映射文件 Hibernate.cfg.xml配置内容: Dialect:参数:用于配置Hibernate使用的不同数据库类型。 Connection.dirver_class参数:表示数据库驱动。 https://www.wendangku.net/doc/e215185313.html,ername参数:表示数据库用户名。 Connection.password参数:表示数据库用户秘密。 Connection.url参数:表示数据库URL。 Current_session_context_class参数:指定当前Session范围和上下文。 Show_sql参数:参数为true,则程序运行时在控制台输出SQL语句。 配置好Hibernate的配置文件,就要实现数据库表和实体对象之间的映射,映射信息在映射文件中。 一个实体类到数据库表??(表名)映射的配置,???.hbm.xml其中各元素的含义如下: Class元素:定义一个实体类的映射信息 常用属性如下: Name表示对象实体类的全限定名。Table表示对应的数据库表名。 Id元素:定义该属性到数据库表主键字段的映射。 常用属性如下: Name表示实体类属性的名字。Type表示实体类属性的类型。Column表示数据库表字段的名字,也可在子元素column 指定。 Generator元素:id元素的子元素用于指定主键的生成策略。 常用属性及子元素如下: Class用来指定具体主键生成策略。Param元素用来传递参数。 常用主键的生成策略如下:increment,identity,native。。。。 Property元素:定义实体类中属性和数据库中表的字段的对应关系。 常用属性如下: Name表示实体类属性的名字。Type表示实体类属性的类型。Column表示数据库表字段的名字,也可在子元素column

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

! Hibernate学习笔记 Java相关课程系列笔记之十四

笔记内容说明 Hibernate(梁建全老师主讲,占笔记内容100%);

目录 一、 Hibernate的概述 0 Hibernate框架的作用 0 Hibernate访问数据库的优点 0 JDBC访问数据库的缺点 0 Hibernate的设计思想 0 二、 Hibernate的基本使用 (1) Hibernate的主要结构 (1) Hibernate主要的API (1) Hibernate使用步骤 (1) HQL语句(简要介绍) (3) 三、数据映射类型 (3) 映射类型的作用 (3) type映射类型的两种写法 (3) 四、 Hibernate主键生成方式 (3) 五种生成方式 (3) 五、 Hibernate基本特性 (4) 对象持久性 (4) 处于持久状态的对象具有的特点 (4) 三种状态下的对象的转换 (4) 批量操作:注意及时清除缓存 (4) 案例:三种状态下的对象使用 (4) 一级缓存机制(默认开启) (4) 一级缓存的好处 (4) 管理一级缓存的方法 (4) 延迟加载机制 (4) 具有延迟加载机制的操作 (4) 常犯的错误 (4) 延迟加载的原理 (4) Session的get和load方法的区别 (4) 延迟加载的好处 (5) 案例:测试延迟加载 (5) 案例:重构NetCTOSS资费管理模块 (5) Java Web程序中如何用延迟加载操作(OpenSessionInView) (5) 六、关联映射 (5) 一对多关系one-to-many (5) 多对一关系many-to-one (5) 多对多关联映射many-to-many (5) 关联操作(查询join fetch/级联cascade) (5) 继承关系映射 (5) 七、 Hibernate查询方法 (6) HQL查询 (6) HQL和SQL的相同点 (6)

小学生英语语法笔记(自己整理)

小学生英语语法笔记 第一章名词 1、名词的数:名词分为可数名词和不可数名词。 可数名词——可以数的名词 不可数名词——数不清(没有复数) Drink:Milk tea water orange juice coke coffee porridge Food:Rice bread meat fish fruit cake dumplings 2、可数名词可以直接用数词来修饰,也可以用many+可数名词复数。 如a desk(一张桌子)many students 对可数名词的数量提问用How many 如How many students are there ? 3、不可数名词的量有以下两种表示方法: 1)some, much ,a little ,a lot of ,a bit of , plenty of 用等表示多少。 对不可数名词的数量提问用How much 如There is much water in the bottle .瓶中有很多水。 How much water in the bottle is there ? 2)不可数名词数词+量词+of + 名词 用a ... of 表示。 如a cup of (一杯......),a bottle of (一瓶......) 如two cups of tea(两杯茶),five pieces of paper(五张纸) 注意单位词后的动词单复数形式往往取决于单位词的单复数形式;千、百等数词与名词加用,表示复数时,数词仍保持单数,名词变复数。 如two hundred students(200名学生) ten thousand trees(10000棵树) 注意既可以与可数名词复数,又可以与不可数名词连用的有:plenty of ,some ,a lot of ,lots of ,most of 等。 4、可数名词的单复数。 1)单数:在其前面加a或an。 如a desk(一张桌子) an old desk(一张旧书桌) 2)复数的规则变化 1)一般情况下加-s 如book--books(书)desk--desks(书桌) 2)以s ,x ,ch , sh结尾加-es 如box--boxes(盒子)bus--buses(公共汽车) 注意①以th 结尾加-s, month--months ②stomach--stomachs 3) (1)以辅音字母+y结尾的,变y为i再加- es。 如city--cities(城市) country--countries(国家) (2)以元音+y结尾的,直接加s。 如:day--days(天),boy--boys(男孩) 4)以f或fe结尾,复数变f或fe 为v再加-es(thief ,wife ,life ,shelf ,knife ,leaf ,self ,half ,wolf) 如knife-knives(书) , half-halves(一半) 注意①有少数词后直接加s,如roof-roofs (屋顶)

hibernate学习笔记

第一次课: 持久化:就是把瞬时状态的数据转变为持久化状态的数据,这一个过程就是持久化。 (java中内存分为:栈(变量,方法,形参都是在栈上),堆(new出来的对象在堆上)) 1)瞬时状态:刚new出来,在内存中存在的对象就是瞬时状态的。如果程序结束,对象就会被回收。 2)持久化状态:在磁盘或者是数据库中存在的数据就是持久状态。 Hibernate是什么? 1)是一个优秀的持久化框架,对jdbc进行进一步的封装。(hibernate,ibatis )。 2)是一个ORM (Object relation mapping ). Mysql,oracle,access 是关系型数据库 = hibernate操作的是对象。 使用hibernate的步骤:1)新建项目 2)引入jar包(hibernate最少依赖8个jar包) 3)新建 hibernate配置文件(hibernate.cfg.xml) ,放在src根目录下面。 用于数据库的配置信息。 com.mysql.jdbc.Driver root abc jdbc:mysql:///fwcz org.hibernate.dialect.MySQLDialect create 4)写bean/vo类,并且编写映射文件。

中考英语语法笔记整理大全

中考英语语法笔记整理大全 2015.8 名词 表示人、事物、地方、现象或抽象概念等的名称的词。知识梳理:提纲挈领,抓住重点和难点! 一、名词的分类 类别意义 表示具体的人名、事物、国家、专有名词地名、机构、团体等的专有名 称 名 可个体 表示单个人的人或事物 数名词 名集合表示一群人或一些事物的总普 词名词称 通 不物质 名表示无法分为个体的物质 可名词 词词 数 抽象 名表示抽象概念的词 名词 词 例词 Jim , China, Qingdao, the UK, the Great Wall girl,student,factory, desk,cat , country people,police,team, clothes,group, crew water, ice, pork, cheese, cotton, broccoli fun, healthy, happiness, courage, love, care 注: 1.专有名词是指人、地方、团体、机构等特有的名称。第一个字母必须大写。专有名词前一般不 加冠词。 2、有普通名词构成的专有名词前要用定冠词“ the,”但它不大写。 3、有些不可数名词有时表示为具体的东西时,则变为可数名词,而且以四上也有了变化。eg. beer ----a beer一杯啤酒,work--- a work工厂,著作,glass---a glass 一个玻璃杯,room 空间 ---a room 一个房间 二、名词的数:表示可以计算数目的人或物称为可数名词。 1、可数名词有单、复数两种形式:可数名词的单数形式要在名词前加“a或 an”;复数形式是在名词 后加“-s 或 -es”。名词复数形式有规则变化和不规则变化两种,规则变化及其读音可依照下表:当名词为:词尾变化读音例词 在清辅音后 chips,jeeps, pats , clock s 读 /s/ 一般情况加 s 在浊辅音或boys, sharpeners, sofas, 元音后读 /z/drawers

Hibernate学习笔记

1、session = HibernateSessionFactory.getSession();// 开启连接 Transaction tx = session.beginTransaction(); // 开启事务 Student stu = (Student) session.get(Student.class, id); session.delete(stu); https://www.wendangku.net/doc/e215185313.html,mit(); 2、session.save(stu); 3、Query q = session.createQuery("from Student"); list = q.list(); 4、session.update(stu); 5、url:jdbc:mysql://localhost:3306/HibernateProject01 Driver:com.mysql.jdbc.Driver 6、在src源码包中新建log4j.properties log4j.rootLogger=info,CONSOLE log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.Target=System.out https://www.wendangku.net/doc/e215185313.html,yout=org.apache.log4j.PatternLayout https://www.wendangku.net/doc/e215185313.html,yout.ConversionPattern= %4p[%t](%F:%L) -%m%n 7、 8、session = HibernateUtil.currentSession(); // 开启连接 session.setFlushMode(FlushMode.AUTO); tx = session.beginTransaction(); // 开启事务 stu = (Student) session.get(Student.class, "ff80808105416d"); https://www.wendangku.net/doc/e215185313.html,mit(); 9、one-to-one和many-to-one中,lazy只可以为false,或不填写 当不填写的时候,采用相应的类里的设置 Set标签是可以的 10、outer-join="true"预先抓取,sql文中是利用连接来实现 常常与hibernate.cfg.xml中的 1 一起使用 11、批量立即加载 在实现上,采用where s.team_id in (?, ?)的形式 12、stu = (Student)session.get(Student.class,"ff80808105416d30001"); stu.setCardId("456"); // 对脱管对象进行更改

考研英语语法篇笔记

名词语法 冠词 数词 代词 形容词 副词 动词 介词常考的介词搭配 连词 感叹词 名词语法: 可数名词的复数形式考查 不可数名词的考法 (一)名词的分类 1、普通名词 (1)个体名词与集体名词的概念

个体名词指的是作为个体而存在的人或事物,如:uncle,tiger,computer、dream、story、century等;集体名词指的是由个体组成的集体,如audience ,family,gang(帮派)、company、committee、community等。有关集体名词,需注意以下三点: A·集体名词视为整体时作单数看待,涉及其成员时作复数看待。Family B·在很多情况下,集体名词后面单复数动词可通用,没有什么差别。Panel(专家小组) C·有少数集体名词通常只能用作单数或复数。Company 、police (2)可数名词的复数形式考法 Some+复数形式的可数名词 several+复数形式的可数名词 a lot of+复数形式的可数名词 lots of+复数形式的可数名词 a large quantity+复数形式的可数名词 heaps of +复数形式的可数名词 a wealth of +复数形式的可数名词 a few+复数形式的可数名词 a (large /huge/great/considerable)number of +复数形式的可数名词 quantities of +复数形式的可数名词 a large quantity of +复数形式的可数名词 a mass of +复数形式的可数名词 a great many+复数形式的可数名词 numerous+复数形式的可数名词 innumerable+复数形式的可数名词 countless+复数形式的可数名词 可数名词的复数形式需注意三点内容: A·某些活动名称、疾病名称和后缀为ics的学科名实际上是单数,如billiards(法式台球)、card 、checkers(跳棋)、acrobatics(杂技)、mumps(腮腺炎)、diabetes(糖尿病)、economics、physics、statistics(统计学)、ethics(伦理学)、politics、genetics(遗传学)等。 B·有些单词只有复数形式,如:goods、clothes、pants、shoes、thanks等 C·有些单词单复同行,如means 、sheep、series、Chinese、species、spacecraft等。 (3)物质名词与抽象名词的概念 不可数名词分为物质名词与抽象名词 物质名词指的是无法分为个体的事物,如cake、beer、coal(煤块)、snow 、yoghurt (酸牛奶);抽象名词用来表示一些抽象概念,如comfort(安慰)、energy、happiness、independence(独立)、weather、welfare(福利)等。需注意以下两点: A·有些名词既是物质名词又是个体名词,如glass与a glass 、tin (锡)与a tin (罐头)、wood (木头)与a wood(树林)等。 B·有些名词既是抽象名词又是个体名词,如authority与a authority权威人士、necessity 与a necessity必需品、power 与a power大国、room空间与a room房间、school学业与a school学校等。 (3)不可数名词的考法 Some +不可数名词 much+不可数名词 a little+不可数名词 considerable+不可数名词 plenty of+不可数名词 a great(good)deal of +不可数名词 a lot of +不可数名词 lots of+不可数名词a mass of +不可数名词 a large quantity of +不可数名词 a large (huge/great/considerable)amount of +不可数名词 heaps of +不可数名词 a body of +不可数名词 2、专有名词 专有名词主要指人名、地名、机构名等人或事物专有的名称。如TOM、NEW YORK、

Hibernate操作数据库课堂笔记HQL

HQL(Hibernate Query Language) Hibernate操作对象(实体类)达到操作数据库表的持久化的一种技术,其实就是对JDBC进行封装让我们使用面向对象的思维去操作关系型数据库。 编写HQL语句注意事项 关键字select update from where等sql关键字不区分大小写 操作实体类对象以及实体类属性必须区分大小写。 操作的是员工表和部门表 员工表 部门表 前提工作[新建web工程添加hibernate支持jar文件和数据库支持jar文件] 编写实体类 编写映射文件xxx.hbm.xml 达到目的 将实体类名和对应数据库表进行映射 将实体类属性和对应的数据库表字段进行映射 编写配置文件[默认放在src/hibernate.cfg.xml] (配置连接数据库的相关信息注意方言添加xxx.hbm.xml的映射文件的位置) 创建包进行分层 com.chinasofti.util放置工程的一些帮助类HibernateUtil.java 提供获取session对象 com.chinasofti.dao.impl 定义操作的实体类接口和操作的实体类接口的实现类

以上项目目录结构如上 为了简单暂时不演示junit单元测试 com.chinasofti.test 功能点1 查询所有部门信息? Sql select * from dept; Hql from Dept;--Dept是实体类对象 使用Query接口的list(); 接口的实现类 List集合遍历使用Query接口的iterator();

接口的实现类 Iterator集合遍历 功能点2 根据部门名称查寻该部门相关信息(含地理位置) dname具有唯一性? 已知dname 获取loc Sql select * from dept where dname=‘’; HQL from Dept where dname=?; --分别是实体类类名和实体类属性 占位符的使用 方式一使用? 抢位置从【0】开始 方式二使用命名参数查询抢位置:别名 功能点3 动态查询条件最多有3个条件但不一定三个条件都有 注意:string StringBuffer StringBulider三个区别? 实现动态设置参数的个数 操作员工表

注解整理笔记

注解整理笔记 @是java中的注解。 JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。 1@SuppressWarnings("serial") 实体类注解例子 2@Entity 3@Table(name = "T_BASE_ROLE") 5@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE, region = CacheConstants.HIBERNATE_CACHE_BASE) //jackson标记不生成json对象的属性 4@JsonIgnoreProperties (value = { "hibernateLazyInitializer" , "handler","fieldHandler" ,"resources","users"}) public class Role extends BaseEntity implements Serializable { 6@Id 7@GeneratedV alue(strategy = GenerationType.AUTO) 8@Column(name = "ID") public Long getId() { return id;} @Excel(exportName="记录创建者", exportFieldWidth = 30) protected String createUser; 9@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00") @Column(name = "CREATE_TIME", updatable = false) 10@Temporal(TemporalType.TIMESTAMP) public Date getCreateTime() { return createTime;} 11@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE}, fetch = https://www.wendangku.net/doc/e215185313.html,ZY) 12@JoinTable(name = "T_BASE_ROLE_RESOURCE", joinColumns = { @JoinColumn(name = "ROLE_ID") }, inverseJoinColumns = { @JoinColumn(name = "RESOURCE_ID") }) 13@OrderBy("id") public List getResources() { return resources;} 14@Transient @SuppressWarnings("unchecked") public List getResourceIds() { if (!Collections3.isEmpty(resources)) { resourceIds = ConvertUtils. convertElementPropertyToList(resources, "id"); } return resourceIds;}

英语语法入门笔记

英语语法入门崔荣容 第一讲语序和五种基本句式 He learns English every day. 他每天学习英语。 (中英语序不同) 英语五种基本句式 一、主+谓 二、主+系+表 系动词:起到联系作用的动词,连接主语与表语。 表语:描述主语的身份、性质、特征、状态 三、主+谓+宾 主语:动作发出者 谓语:作出的动作 宾语:动作的对象 四、主+谓+间宾+直宾 间宾:通常是人 直宾:通常是物 五、主+谓+宾+宾补 宾补:对宾语的补充说明 一、主+谓 The universe remains. 宇宙长存 中英文语序一致 二、主+系+表 The food is delicious. 这个食物很好吃 中英文语序一致 三、主+谓+宾 He took his bag and left.(left是第二个谓语) 他拿着他的包离开了 中英文语序一致

四、主+谓+间宾+直宾 Her father bought her a dictionary. buy sb sth(双宾语) 她爸爸给她买了一本词典(her与a dictionary,两个宾语,一个是人、一个是物) 中英文语序一致 五、主+谓+宾+宾补 We made him our monitor. 我们选他当班长 (him与our monitor,都是指同一个人,our monitor是对him 的补充说明) 中英文语序一致 Nothing is impossible to a willing heart! 有志者事竟成! 第二讲 be动词的形式和用法 一、be动词的形式:be、am、is、are、was、were、being 、been 1、The man is back. 2、They are back. 3、He was back. 4、They were back. 5、They have been back. 6、I’ll be back. 上述“back”是副词,构成主系表结构。 二、be动词的用法:起到联系前后的作用(一般翻译为“是”,或无实意而不作翻译),多用于主系表结构。后面接名词、形容词、地点副词或短语作补足语成分。 1、The man is a teacher. a teacher是名词 2、Mary’s new dresses are colorful. colorful是形容词 3、My mother was in the kitchen. in the kitchen是地点副词。

Hibernate韩顺平讲课笔记

1. hibernate 是个框架framework 是orm框架,orm(object relation mapping)对象关系映射框架。hibenate处于我们项目的持久层位置(所以又称为持久层框架); 2. hibernate实际上是对jdbc进行轻量级的封装。 hibernate 定义:是对jdbc进行轻量级的orm框架封装,充当项目的持久层。 3. hibernate的学习的内容: A: hibernate api B:hibernate.cfg.xml(这个是hibernate的核心配置文件)、 C:对象关系映射文件 4. 使用hibernate的好处 5. hibernate的基础还是JAVA的反射机制。 注意:在把hibernate的jar包粘贴到lib文件下后,要引入到项目中去,

引入成功后,在Referenced Librares中能看到引入的这些jar包。 6 hibernate的开发方式有三种:

注意:什么是pojo (plan old/ordinary java object 简单的java 对象) 注意:hibernate基本原理图 使用先建数据库的方式开发hibernante,下面是开发流程 1 创建一个项目 javaProject 2 创建一个简单项目框架示意图

3.在Myeclipse中引入hibernate开发包。 4.创建employe表 5. 创建一个domain对象和对象关系映射文件 注意:对象关系映射文件作用是用于指定domain对象和表的映射关系,该文件的取名是哟规定:domain对象.hbm.xml。一般我们放在和domain对象同一个文件夹(包)下。 A:创建domain对象 B:创建对象关系映射文件。domain对象.hbm.xml

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 文件,主要是对数据库的连接,具体如下:

root mysql com.mysql.jdbc.Driver jdbc:mysql:///Test(或者:jdbc:mysql://localhost:3306/Test) org.hibernate.dialect.MySQLInnoDBDialect true true update 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) {

相关文档