文档库 最新最全的文档下载
当前位置:文档库 › Hibernate个人学习笔记

Hibernate个人学习笔记

Hibernate个人学习笔记
Hibernate个人学习笔记

Hibernate

使用之后JDBC大部分不用再编写了

轻量级框架没有侵入性

适合对象关系清晰、

不适合聚集性批量操作

不适合需要使用数据库特定性功能的情况

?课程目标:

?理解O/R Mapping原理

?掌握Hibernate开发的相关知识

?能使用Hibernate进行实际项目开发

?Hibernate高手进级:性能优化策略

目录

什么是Hibernate

快速体验Hibernate的开发步骤

认识Hibernate基本核心接口

Hibernate的对象关系映射

Hibernate查询语句(HQL)

直接使用JDBC操作数据库的步骤很繁琐

JDBC操作的是关系型数据库

我们用JA V A开发程序,则使用面向对象的思想

Hibernate正是在这两种不同的模型之间建立关联,Hibernate给我们提供了利用面向对象的思想来操作关系型数据的接口

Hibernate能做什么?- 理解O/R映射

Hibernate能帮助我们利用面向对象的思想,开发基于关系型数据库的应用程序

?第一:将对象数据保存到数据库

?第二:将数据库数据读入对象中

1、第一个hibernate项目,入门

1.1、Hibernate_first创建步骤

1、新建java项目

2、创建User Library,加入如下jar

* HIBERNATE_HOME/hibernate3.jar

* HIBERNATE_HOME/lib/*.jar

* MySql jdbc驱动

3、创建hibernate配置文件hibernate.cfg.xml,为了便于调试最好加入log4j配置文件

位于:hibernate-3.2\etc 目录下

4、定义实体类User.java

5、定义User类的映射文件User.hbm.xml

6、将User.hbml.xml文件加入到hibernate.cfg.xml文件中

7、编写hbm2ddl工具类:ExportDB.java将实体类→生成数据库表

public static void main(String[] args) {

//读取hibernate.cfg.xml文件

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

SchemaExport export = new SchemaExport(cfg);

export.create(true, true);

}

8、开发客户端Client.java

为了方便跟踪sql执行,在hibernate.cfg.xml文件中加入

true

public static void main(String[] args) {

//读取hibernate.cfg.xml文件

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

//创建SessionFactory

SessionFactory sf = cfg.buildSessionFactory();

Session session = null;

try{

session = sf.openSession();

//开启事务

session.beginTransaction();

User user = new User();

user.setPassword("jbjb");

user.setName("不得了");

user.setCreateDate(new Date());

user.setExpireDate(new Date());

//保存数据

session.save(user);

//提交事务

session.getTransaction().commit();

}catch(Exception e){

e.printStackTrace();

//回滚事务

session.getTransaction().rollback();

}finally{

if(session != null){

if(session.isOpen()){

//close session

session.close();

}

}

}

}

}

1.2、步骤总结

?实体类(持久化类)的设计

?实体类与关系数据库的映射

?应用的开发

1.3、Hibernate核心接口

1.3.1 Configuration

概述:Configuration 类负责管理Hibernate 的配置信息。它包括如下内容:

?Hibernate运行的底层信息:数据库的URL、用户名、密码、JDBC驱动类,数据库Dialect,数据库连接池等。

?Hibernate映射文件(*.hbm.xml)。

Hibernate配置的两种方法:

?属性文件(hibernate.properties)。

①调用代码:Configuration cfg = new Configuration();

?xml文件(hibernate.cfg.xml)。

②调用代码:Configuration cfg = new Configuration().configure();

com.mysql.jdbc.Driver

jdbc:mysql://localhost/hibernate_first

Root

Root

Org.hibernate.dialect.MySQLDialect

true

1.3.2 SessionFactory

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

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

他的创建很耗时的,通常放在一个静态方法里面只创建一次

static {

try {

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

factory = cfg.buildSessionFactory();

} catch(Exception e) {

e.printStackTrace();

}

}

调用代码:

SessionFactory sessionFactory = cfg.buildSessionFactory();

说明:SessionFactory由Configuration对象创建,所以每个Hibernate配置文件,实际上是对SessionFactory的配置

1.3.3 Session(会话)

概述:

?Session不是线程安全的,它代表与数据库之间的一次操作,它的概念介于Connection 和Transaction之间。

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

?Session通过SessionFactory打开,在所有的工作完成后,需要关闭。

?它与Web层的HttpSession没有任何关系。

调用代码

Session session = sessionFactory.openSession();

2.测试实体对象的生命周期

2.1 junit简介:

* 编写测试类xxxTest,需要继承TestCase

* 编写单元测试方法,测试方法必须以test开头,测试方法不能含有参数和返回值,如:public void testHello1() {}

* 最好单元测试的代码单独建立一个目录

2.2了解Hibernate中CRUD操作

public class SessionTest extends TestCase {

public void testSave1() {

Session session = null;

Transaction tx = null;

User user = null;

try {

session = HibernateUtils.getSession();

tx = session.beginTransaction();

//Transient状态

user = new User();

user.setName("李四");

user.setPassword("123");

user.setCreateTime(new Date());

user.setExpireTime(new Date());

//persistent状态,当属性发生改变的时候,hibernate会自动和数据库同步

session.save(user);

user.setName("王五");

//session.update(user);

https://www.wendangku.net/doc/b812142351.html,mit();

}catch(Exception e) {

e.printStackTrace();

tx.rollback();

}finally {

HibernateUtils.closeSession(session);

}

//detached状态

user.setName("张三");

try {

session = HibernateUtils.getSession();

session.beginTransaction();

//persistent状态

session.update(user);

session.getTransaction().commit();

}

public void testReadByGetMethod1() {

Session session = null;

try {

session = HibernateUtils.getSession();

session.beginTransaction();

//马上发出查询sql,加载User对象

User user = (User)session.get(User.class,

"402880d01b9bf210011b9bf2a2ff0001");

System.out.println("https://www.wendangku.net/doc/b812142351.html,=" + user.getName());

//persistent状态,当属性发生改变的时候,hibernate会自动和数据库同步

user.setName("龙哥");

session.getTransaction().commit();

}

public void testReadByGetMethod2() {

Session session = null;

try {

session = HibernateUtils.getSession();

session.beginTransaction();

//采用get加载数据,如果数据库中不存在相应的数据,返回null

User user = (User)session.get(User.class, "asdfsafsdfdsf");

session.getTransaction().commit();

}

public void testReadByLoadMethod1() {

Session session = null;

try {

session = HibernateUtils.getSession();

session.beginTransaction();

//不会发出查询sql,因为load方法实现了lazy(懒加载或延迟加载)

//延迟加载:只有真正使用这个对象的时候,才加载(发出sql语句)

//hibernate延迟加载实现原理是代理方式

User user = (User)session.load(User.class,

"402880d01b9bf210011b9bf2a2ff0001");

System.out.println("https://www.wendangku.net/doc/b812142351.html,=" + user.getName());

//persistent状态,当属性发生改变的时候,hibernate会自动和数据库同步

user.setName("发哥");

session.getTransaction().commit();

}

public void testReadByLoadMethod2() {

Session session = null;

try {

session = HibernateUtils.getSession();

session.beginTransaction();

//采用load加载数据,如果数据库中没有相应的数据

//那么抛出ObjectNotFoundException

User user = (User)session.load(User.class, "55555555");

System.out.println(user.getName());

session.getTransaction().commit();

}

public void testUpdate1() {

Session session = null;

try {

session = HibernateUtils.getSession();

session.beginTransaction();

//手动构造的detached状态的对象

User user = new User();

user.setId("402880d01b9be8dc011b9be9b23d0001");

user.setName("德华");

session.update(user);

session.getTransaction().commit();

}

public void testDelete1() {

Session session = null;

try {

session = HibernateUtils.getSession();

session.beginTransaction();

// //手动构造的detached状态的对象

// User user = new User();

// user.setId("402880d01b9be8dc011b9be9b23d0001");

// user.setName("德华");

// session.delete(user);

User user = (User)session.load(User.class,

"402880d01b9be8dc011b9be9b23d0001");

session.delete(user);

session.getTransaction().commit();

2.3了解get和load的区别?

* get不支持lazy,load支持lazy

* 采用get加载数据,如果没有匹配的数据,返回null,而load则抛出异常

2.4 Transient、persisten 、detached的状态特征

transient状态的特征?

* 在数据库中没有与之匹配的数据

* 没有纳入session的管理

persistent状态的特征?

* persistent状态,当属性发生改变的时候,Hibernate会自动和数据库同步库数据库中有与之匹配的数据

* 纳入了session的管理

* 在清理缓存(脏数据检查)的时候,会和数据库同步

detached状态的特征?

* 在数据库中有与之匹配的数据

* 没有纳入session的管理

2.5 QueryTest

public void testQuery() {

Session session = null;

try {

session = HibernateUtils.getSession();

Transaction tx = session.beginTransaction();

Query query = session.createQuery("from User");

query.setFirstResult(0);

query.setMaxResults(2);

List userList = query.list();

for(Iterator iterator=userList.iterator();iterator.hasNext();){ User user = (User)iterator.next();

System.out.println(user.getId());

System.out.println(user.getName());

}

https://www.wendangku.net/doc/b812142351.html,mit();

3、Hibernate基本映射

3.1 映射关系

实体类---表

实体类中的普通属性---表字段

采用标签映射成数据库表,通过标签将普通属性映射成表字段

所谓普通属性指不包括自定义类、集合和数组等

注意:如果实体类和实体类中的属性和sql中的关键字重复,必须采用table或column重新命名3.2 实体类的设计原则

* 实现一个默认的(即无参数的)构造方法(constructor)

* 提供一个标识属性(identifier property)(可选)

* 使用非final的类(可选),final之后就不能继承了

* 为持久化字段声明访问器(accessors) get、set方法

3.3 主键生成策略:

uuid、native和assigned

uuid

用一个128-bit的UUID算法生成字符串类型的标识符,这在一个网络中是唯一的(使用了IP地址)。UUID被编码为一个32位16进制数字的字符串。

native

根据底层数据库的能力选择identity, sequence 或者hilo中的一个。

assigned

让应用程序在save()之前为对象分配一个标示符。这是元素没有指定时的默认生成策略。主键这个时候必须手动分配

4. hibernate多对一关联映射

4.1 多对一关联映射的本质:

* 将关联关系映射到数据库,所谓的关联关系是对象模型在内存中的一个或多个引用,多个用户(user)属于一个组(group)

会在多的一端加入一个外键,指向一的一端,这个外键是由中的column属性定义的,如果忽略了这个属性那么默认的外键与实体的属性一致

public class User {

private int id;

private String name;

private Group group;

标签的定义示例:

*

many-to-one的映射最常用,也是最容易理解和编写的

生成的DDL语句如下

create table T_Group (id varchar(255) not null, name varchar(255), primary key (id))

create table User (id varchar(255) not null, name varchar(255), password varchar(255), createTime datetime, expireTime datetime, groupid varchar(255), primary key (id)) alter table User add index FK285FEBC3D18669 (groupid), add constraint FK285FEBC3D18669 foreign key (groupid) references T_Group (id) 约束关系字段

从生成的DDL语句,我们可以知道,实际上是在User表上建立了一个指向Group表的外键关联

理解级联的含义?

* 是对象的连锁操作

4.2 一对一关联映射(one-to-one)

两个对象之间是一对一的关系,如Person-IdCard

有两种策略可以实现一对一的关联映射

?主键关联:即让两个对象具有相同的主键值,以表明它们之间的一一对应的

关系;数据库表不会有额外的字段来维护它们之间的关系,仅通过表的主键

来关联

?唯一外键关联:外键关联,本来是用于多对一的配置,但是如果加上唯一的

限制之后,也可以用来表示一对一关联关系;

4.2.1一对一主键关联映射

①单项关联personal →IdCard

一对一主键关联映射:让两个实体对象的id保持相同,这样可以避免多余的字段被创建Person具体映射:

idCard

IdCard idCard = new IdCard();

idCard.setCardNo("88888888888888");

Person person = new Person();

person.setName("菜10");

person.setIdCard(idCard);

//不会出现TransientObjectException异常

//因为一对一主键关联映射中,默认了cascade属性

session.save(person);

session.getTransaction().commit();

//不会出现TransientObjectException异常

//因为一对一主键关联映射中,默认了cascade属性

②双向关联Person<---->IdCard

需要在idcard映射文件中加入标签指向person,指示hibernate如何加载person

IdCard.hbm.xml:

默认根据主键加载

4.2.2 一对一唯一外键关联

①单向关联Person---->IdCard

一对唯一外键关联映射是多对一关联映射的特例

可以采用标签,指定多的一端的unique=true,这样就限制了多的一端的多重性为一

通过这种手段映射一对一唯一外键关联

②双向关联Person<---->IdCard

一对一唯一外键关联双向,需要在另一端(idcard),添加标签,指示hibernate 如何加载其关联对象,默认根据主键加载person,外键关联映射中,因为两个实体采用的是person 的外键维护的关系,所以不能指定主键加载person,而要根据person的外键加载,所以采用如下映射方式:

idCard映射文件里面:

4.3一对多(one-to-many)

一对多关联映射利用了多对一关联映射原理

4.4.1 单向

Students端里面有没有指向班级对象的属性

多对一关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是多指向一

一对多关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是一指向多

加载一的一端的时候能把多的一端加载上来;

也就是说一对多和多对一的映射策略是一样的,只是站的角度不同

Classes.hbm.xml:

create table t_classes (id integer not null auto_increment, name varchar(255), primary key (id))

create table t_student (id integer not null auto_increment, name

varchar(255), classesid integer, primary key (id))

在一的一端维护关系的缺点:

* 如果将t_student表里的classesid字段设置为非空,则无法保存

* 因为不是在student这一端维护关系,所以student不知道是哪个班的,

所以需要发出多余的update语句来更新关系

4.4.2 双向

一对多双向关联映射:

* 在一一端的集合上使用,在对方表中加入一个外键指向一一端

* 在多(student)一端采用

create table t_classes (id integer not null auto_increment, name varchar(255), primary key (id))

create table t_student (id integer not null auto_increment, name varchar(255), classesid integer, primary key (id))

alter table t_student add index FK4B9075708EBC77F7 (classesid), add constraint FK4B9075708EBC77F7 foreign key (classesid) references t_classes (id)

注意:标签指定的外键字段必须和指定的外键字段一致,否则引用字段的错误Classes端:

Student端:

如果在一(class)的一端维护一对多关联关系,hibernate会发出多余的udpate语句,所以我们一般在多(student)的一端来维护关联关系

inverse设置之前:

Hibernate: insert into t_student (name, classesid) values (?, ?)

Hibernate: insert into t_student (name, classesid) values (?, ?) Hibernate: insert into t_classes (name) values (?)

Hibernate: update t_student set classesid=? where id=?

Hibernate: update t_student set classesid=? where id=?

inverse设置之后:

Hibernate: insert into t_student (name, classesid) values (?, ?) Hibernate: insert into t_student (name, classesid) values (?, ?) Hibernate: insert into t_classes (name) values (?)

关于inverse属性:

inverse主要用在一对多和多对多双向关联上,inverse可以被设置到集合标签上,默认inverse为false,所以我们可以从”一“一端和”多“一端维护关联关系,

如果设置成inverse为true,则我们只能从多一端来维护关联关系

注意:inverse属性,只影响数据的存储,也就是持久化

inverse和cascade

* inverse是关联关系的控制方向

* cascade操作上的连锁反应

4.4 多对多(many-to-many)

4.4.1 单向(User---->Role)

中间的关系多需要建立第三方表

一般的设计中,多对多关联映射,需要一个中间表

Hibernate会自动生成中间表

Hibernate使用many-to-many标签来表示多对多的关联

多对多的关联映射,在实体类中,跟一对多一样,也是用集合来表示的

column="column_name" (1)

class="ClassName" (2)

/>

(1) column(必需): 中间映射表中,关联目标表的关联字段

(2) class (必需): 类名,关联目标类

(1)

(1) column(必需):当前表的关联字段,被连接表(students)中定义了一个外键(userid)引用原表(t_user)的主键

* 具体映射方式:

User.hbm.xml:

* SQL执行语句:

create table t_role (id integer not null auto_increment, name varchar(255), primary key (id))

create table t_user (id integer not null auto_increment, name varchar(255), primary key (id))

create table t_user_role (userid integer not null, roleid integer not null, primary key (userid, roleid))

alter table t_user_role add index FK331DEE5FDC0ABE1 (userid), add constraint FK331DEE5FDC0ABE1 foreign key (userid) references t_user (id)

alter table t_user_role add index FK331DEE5F86B5677 (roleid), add constraint FK331DEE5F86B5677 foreign key (roleid) references t_role (id)

4.4.2 双向

5. session flush测试(有点迷惑)

session flush方法主要做了两件事:

* 清理缓存

* 执行sql

session在什么情况下执行flush

* 默认在事务提交时commit()

* 显示的调用flush()

* 在执行查询前,如:iterate

hibernate按照save(insert),update、delete顺序提交相关操作

/**

* 测试uuid主键生成策略

*/

//因为user的主键生成侧路采用的是uuid,所以调用完成save后,只是将user纳入到了session 的管理,不会发出insert语句,但是id已经生成,session中existsInDatebase状态为false session.save(user);

//调用flush,hibernate会清理缓存,执行sql

//如果数据库的隔离级别设置为为提交读,那么我们可以看到flush过的数据

//并且session中existsInDatebase状态为true

session.flush();

//提交事务

//默认情况下commit操作会先执行flush清理缓存,所以不用显示的调用flush

//commit后数据是无法回滚的

https://www.wendangku.net/doc/b812142351.html,mit();

/**

* 测试native主键生成策略

*/

//因为user的主键生成策略为native,所以调用session.save后,将执行insert语句,返回有数据库生成的id

//纳入了session的管理,修改了session中existsInDatebase状态为true

//【如果数据库的隔离级别设置为为提交读】,那么我们可以看到save过的数据session.save(user);

https://www.wendangku.net/doc/b812142351.html,mit();

//因为user的主键生成侧路采用的是uuid,所以调用完成save后,只是将user纳入到了session 的管理

//不会发出insert语句,但是id已经生成,session中existsInDatebase状态为false

session.save(user);

//将user对象从session中逐出,即session的EntityEntries属性中逐出

session.evict(user);

//无法成功提交,因为hibernate在清理缓存时,在session的insertions集合中取出user对象进行insert操作后

//需要更新entityEntries属性中的existsInDatabase为true,而我们采用evict已经将user从session 的entityEntries

//中逐出了,所以找不到相关数据,无法更新,抛出异常

https://www.wendangku.net/doc/b812142351.html,mit();

//因为user的主键生成侧路采用的是uuid,所以调用完成save后,只是将user纳入到了session 的管理不会发出insert语句,但是id已经生成,session中existsInDatebase状态为false session.save(user);

//flush后hibernate会清理缓存,会将user对象保存到数据库中,将session中的insertions中的user对象清除,并且设置session中existsInDatebase的状态为true

session.flush();

//将user对象从session中逐出,即session的EntityEntries属性中逐出

session.evict(user);

//可以成功提交,因为hibernate在清理缓存时,在session的insertions集合中无法找到user对象所以就不会发出insert语句,也不会更新session中的existsInDatabase的状态

https://www.wendangku.net/doc/b812142351.html,mit();

数据库的隔离级别

注意:事务的隔离级别是对当前事务自身而言,及在【本次事务当中】的其他事务对自己的影响级别。

隔离级别是否存在脏读是否存在不可重复读是否存在幻读Read Uncommited Y Y Y

Read Commited N Y Y

Repeated Read N N Y

Serializble N N N

ReadCommitted:

假设A事务对正在读取数据Data放置了共享锁,那么Data不能被其它事务改写,所以当B事务对Data进行读取时总和A读取的Data数据是一致的,所以避免了脏读。由于在A 没有提交之前可以对Data进行改写,那么B读取到的某个值可能会在其读取后被A更改从而导致了该值不能被重复取得;或者当B再次用相同的where字句时得到了和前一次不一样数据的结果集,也就是幻像数据。

ReadUncommitted:

假设A事务即不发布共享锁,也不接受独占锁,那么并发的B或者其它事务可以改写A事务读取的数据,那么并发的C事务读取到的数据的状态和A的或者B的数据都可能不一致,那么。脏读、不可重复读、幻象数据都可能存在。

RepeatableRead:

(注意MSDN原文中的第一句话:在查询中使用的所有数据上放置锁,所以不存在脏读的情况)。

假设A事务对读取的所有数据Data放置了锁,以阻止其它事务对Data的更改,在A没有提交之前,新的并发事务读取到的数据如果存在于Data中,那么该数据的状态和A事务中的数据是一致的,从而避免了不可重复的读取。但在A事务没有结束之前,B事务可以插入新记录到Data所在的表中,那么其它事务再次用相同的where字句查询时,得到的

全十季《老友记》学习笔记

这是六个人的故事,从不服输而又有强烈控制欲的monica,未经世事的千金大小姐rachel,正直又专情的ross,幽默风趣的chandle,古怪迷人的phoebe,花心天真的joey——六个好友之间的情路坎坷,事业成败和生活中的喜怒哀乐,无时无刻不牵动着彼此的心,而正是正平凡的点点滴滴,却成为最令人感动与留恋的东西。 人物:1、瑞秋?格林(RACHEL GREENE)由珍妮佛?安妮斯顿(Jennifer Aniston)扮演 瑞秋是莫妮卡的高中同学,在与牙医未婚夫的婚礼上脱逃至莫妮卡处。 2、罗斯?盖勒(Ross Geller)由大卫?修蒙(David Schwimmer)扮演 罗斯为莫妮卡的哥哥,于高中时即暗恋妹妹的同学瑞秋,但始终不敢表白 3、莫妮卡?盖勒(Monica Geller)由科妮寇?克斯(Courteney Cox Arquette)扮演 莫妮卡是《六人行》的中心人物,其他五人可以说就是由她延伸出来的。 4、钱德?宾(Chandler Bing)由马修?派瑞(Matthew Perry)扮演 钱德为罗斯的大学同学,因而与罗斯、莫妮卡结识甚久 5、菲比?巴费(Phoebe Buffay)由丽莎?库卓(Lisa Kudrow)扮演 菲比为莫妮卡的旧室友,后因受不了其洁癖而搬走 6、乔伊?崔比昂尼(Joey Tribbiani)由麦特?雷布兰克(Matt Le Blanc)扮演 乔伊与钱德为共租公寓的室友,自然也是莫妮卡和瑞秋的邻居 《电影手册》评价: friends是一部彻底而纯粹的通俗剧的代表,它是一部具有十足纽约风格的情景喜剧。它形成了一个自己的世界,围绕着同一个屋檐下的,6个30上下的男女拉开了故事帷幕。他们在一起,倾听彼此的烦恼和快乐,一起成长和生活,而故事的平衡点,也是最常见不过——6个单身贵族最终将组成三对情侣(此点有错误),这一对称组合加强了全剧的轻松喜剧效果。Friends为我们解析了每天的平淡生活,普通情侣的爱恋或友情体现了逐步系列剧的力量。城市文明异类温柔的疯狂,却又怀有情窦初开的少女梦想,这个从普通生活中得来的灵感。一直推动系列剧向滑稽情节发展。Friends给我们解释了什么是快乐的痛苦,再多一点,我们又会把自己幽闭在这个神奇的世界里。 【Season 1 Index】 Episode 101 : The One Where Monica Gets A New Roommate (Pilot) Episode 102 : The One With The Sonogram At The End Episode 103 : The One With The Thumb Episode 104 : The One With George Stephanopoulos Episode 105 : The One With The East German Laundry Detergent Episode 106 : The One With The Butt Episode 107 : The One With The Blackout Episode 108 : The One Where Nana Dies Twice Episode 109 : The One Where Underdog Gets Away Episode 110 : The One With The Monkey Episode 111 : The One With Mrs. Bing Episode 112 : The One With The Dozen Lasagnas Episode 113 : The One With The Boobies Episode 114 : The One With The Candy Hearts Episode 115 : The One With The Stoned Guy Episode 116 : The One With Two Parts, Part 1

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/b812142351.html, = name; }

党员个人学习笔记篇

时间:2011年2月20日12点 地点:陈山办公室 学习形式:个人学习 学习内容:“活雷锋”郭明义 好事做了几十年,家里被捐得空空荡荡,而郭明义却从未感到倦和悔,日子过得充实和快乐。分析郭明义的精神动因,是他以助人为乐,坚守奉献使人快乐、助人使人幸福。 现年52岁的郭明义,在鞍钢工作28年收入29万元,他捐献了12万元;参加无偿献血20年,累计献血6万毫升,是他自身血量的10倍;家里的电视机、自行车,身上的劳动服,只要有困难孩子和工友需要,他毫无保留……“只要是有益于党和人民的事,我就要天天做,每做一件,就有一股幸福感涌上心头,越做越有劲!”这就是郭明义追求和体验幸福的真实写照。 这种奉献的幸福观是郭明义内心质朴的道德品格使然,也是他自觉按照党性要求,主动接触和服务社会的结果。 郭明义的幸福观是一面镜子,党员干部可以从中照出自己的弱点和不足,广大群众也可以从中找到幸福的人生航向。当前,社会价值取向多元化,很多人的追求更加物质化、功利化,郭明义的幸福观则提示我们:不被五颜六色的物质诱惑,追求质朴的生活和高尚的快乐,就能够活出精彩、豁达。 时间:2011年4月20日20点 地点:家中 学习形式:个人学习 学习内容:“两会”精神学习 学习记录: 1、政府工作报告认真总结了“十一五”时期我国经济社会发展取得的巨大成就,提出的“十二五”时期的主要目标任务和2011年的工作部署。并提出了“十二五”规划纲要:高举中国特色社会主义伟大旗帜,以邓小平理论和“三个代表”重要思想为指导,深入贯彻落实科学发展观,适应国内外形

势新变化,顺应各族人民过上更好生活新期待,以科学发展为主题,以加快转变经济发展方式为主线,深化改革开放,保障和改善民生,巩固和扩大应对国际金融危机冲击成果,促进经济长期平稳较快发展和社会和谐稳定,为全面建成小康社会打下具有决定性意义的基础。 2、对近期热议的“国体”和“政体”的思考:国体决定政体,政体反映国体。我国是人民民主专政的社会主义国家,这决定了我国坚持人民代表大会制度的政权组织形式。我国人民民主专政是新型民主和新型专政,其本质是人民当家作主。人民代表大会制度是我国人民当家作主和公民享有广泛民主权利的制度保障,直接体现我国的国家性质。 3、对“民生”和“政府”关系的思考:我国国家机构是人民意旨的执行者和利益的扞卫者,对人民负责是其工作宗旨。民生问题直接关系到广大人民群众的切身利益。我国国家机构是人民意旨的执行者和利益的扞卫者,对人民负责是其工作宗旨。因此,国家十分关注民生问题。

Hibernate学习入门教程

Hibernate学习入门教程 开发环境搭建 [日期:2015-08-11] 来源:Linux社区作者:doctorJoe [字体:大中小] 其实一两个月前就在了解Hibernate方面的知识了,但一直以来,都没有好好的总结,而且一直使用的是myeclipse,感觉有些傻瓜式的操作就可以搭建起Hibernate的开发环境,但这样一点都不好,没有理解到Hibernate到底是怎么配置的,所以你今天特使用Eclipse来一步一步搭建Hibernate的开发环境,下面,正式进入正题。 在Hibernate中开启日志https://www.wendangku.net/doc/b812142351.html,/Linux/2015-07/120499.htm Hibernate+JUnit测试实体类生成数据库表https://www.wendangku.net/doc/b812142351.html,/Linux/2015-07/120161. htm Hibernate整体理解https://www.wendangku.net/doc/b812142351.html,/Linux/2014-07/104405.htm Hibernate的映射机制https://www.wendangku.net/doc/b812142351.html,/Linux/2014-12/110265.htm 新建一个web项目,名字就随便吧,你喜欢什么名字就什么吧,这是我的截图。

引入hibernate的依赖jar包,我使用的是hibernate-release-4.3.10.Final,下载好后解压,打开压缩包下的lib目录下的require文件夹,这是hibernate的所以来的必须的jar包,接下来,在刚才新建的项目里新建一个libs文件夹,将刚才的所说的jar包copy进去,另外,由于我们需要连接MySQL数据库以及使用JUnit测试,将所需的mysql-connector-java-5.0.8-bin.jar和junit-4.5.jar两个jar包引用进去,关于这些jar包,可以在网上搜索。接下来,就是把这些jar 包添加到编译环境中去,选中libs下的jar包,右击选择Build Path –>Add to Build Path,这样就把依赖jar包成功添加进去了。 继续往下,我们需要配置最重要的hibernate配置文件hibernate.cfg.xml以及进行日志处理的log4j.properties属性文件:打开上一步解压后的hibernate文件夹,打开project—>etc文件夹,将该文件夹下的hibernate.cfg.xml和log4j.properties文件拷贝到项目的src文件夹下,打开hibernate.cfg.xml文件,将session-factory标签中的内容替换成如下的内容: org.hibernate.dialect.MySQLDialect com.mysql.jdbc.Driver jdbc:mysql:///hibernatedemo root yzp140103 这样就配置好了。 接下来,要做的就是做开发测试了:在项目的src目录下新建一个实体类包com.joe.entity,在该包下新建一个实体类Student,代码如下: package com.joe.entity; import java.io.Serializable;

党员干部学习笔记填写规范要求

党员干部学习笔记填写规范要求 1、个人信息 第2页“个人信息”表中除“编号”一栏由党总支统一填写外,其余栏均由本人进行填写。 “建设学习型党组织寄语”一栏由党支部书记根据年度党员民主评议结果和创先争优活动测评情况,对党员提出希望及要求。 第3页内容由党总支进行填写,落款加盖党总支印章。 2、推进学习型党组织建设工作计划 该部分主要记录本年度党员干部个人在党的理论知识学习方面的计划和安排。工作计划分党总支学习计划、党支部学习计划、党员干部自学学习计划。党总支工作计划,由政工岗负责编制,党总支书记审核后,按月下发各党支部,每月不少于一个课时;党支部工作计划由党支部书记负责编制,按月组织党员学习,每月不少于一个课时;党员干部自学学习计划由党员干部自己根据实际情况进行学习,每月不少于一个课时。学习计划按照月度依次签写。 3、推进学习型党组织建设生活纪要 该部分主要是对记录党员干部参加组织生活各类会议活动内容。主要内容包括三会一课,如党总支委员会、党员大会、党支部委员会。要求普通党员每季度最少签写一次党员大会;党支部委员每月签写一次党支部委员会,每季度一次党员大会;党总支委员每季度签写一次总支委员会、一次党员大会。 4、推进学习型党组织建设学习笔记 填写格式: 时间:**年**月**日

地点:**** 形式:授课/自学 授课人:*** 内容:…… 学习笔记中层管理人员每月记录两次,自学一篇,中心组集中授课一篇;党员每月记录三次,党总支集中授课一次,党支部集中授课一次,党员自学一次;干部每月记录两次,党支部集中授课一次,自学一次。 5、推进学习型党组织建设学习心得 该部分主要记录每季度党员干部通过学习的个人学习心得。要求每季度记录一次,格式如下: 时间:**年**月**日 内容:…… 6、推进学习型党组织建设经验总结 该部分主要记录半年来党员干部个人在日常工作、理论学习取得的经验进行归纳总结,回顾成绩、找出不足。每半年填写一次。记录内容分为四部分,第一部分半年工作学习总结,第二部分半年来工作学习中取得的成绩,第三部分工作学习中存在的问题,第四部分下步工作学习措施。 注:各党支部书记必须每月对党员干部学习笔记进行批阅,同时要每季度开展一次“笔记展评”、“明星笔记”等形式的互动交流学习活动,在月度奖金中考核兑现。

MyEcLipse9.0配置TomCat和hiberhate学习笔记

MyEcLipse9.0配置TomCat和hibernate学习笔记 最近在学习Android,对于一个刚开始学习Android的人来说,配置开发环境就是个大问题,因为Android的企业级开发需要配置的环境不是那么容易的,特此将此笔记文档与大家共享,虽然可能有的朋友不知道我现在说的是什么,但对于一个想在编程方面继续发展的人来说,这是非常重要的 【1】采用标准的JA V A开发环境MyEclipse9.0(最新版) 【2】中间服务器采用入门级的TomCA T(绿色版,解压既能使用) 【3】Android的ADT插件采用Android2.3 【4】数据库采用轻量级的MySQL 【5】还需要JA V A的JDK 【6】还有Android虚拟机的SDK做支持 【7】开发工具,这里我就不上传了,因为群空间太小,就截个图算了,如果大家有兴趣搞Android开发的话,可以自己去网站下载 【8】开发工具有了,下面怎么把中间件服务器TomCat和数据库MySQL整合到MyEcLipse9.0中呢 <1>现将TomCat解压到C盘的ProgramFile文件夹下 <2>因为用的TomCat是绿色版的所以解压既能使用 在运行处敲cmd进入DOS窗口进入刚才装TomCat的目录

进入目录以后,我们要执行的是启动中间件服务器的组件 所以到 Bin下启动中间件服务器的批处理文件 如上图所示,启动startup.bat在bin目录下直接敲startup.bat,启动以后会如下图所示

可以看到启动信息和启动的时间,下面我们可以通过浏览器来查看我们的中间件服务器 在浏览器的地址栏上打 这里的localhost代表本地,也就是你自己的机器,也可以改成IP地址127.0.0.1也能代表本机,后面的8080是端口号,这里需要注意的是你的8080端口号必须没有被正用,否则得改端口号 运行效果如下图 这表示中间件服务器tomcat已经没有问题 【二】 安装MySQL数据库,这里就不截图了,需要注意的是,MYSQL的字符集,因为要开发基于中文的软件,所以一般选择MYSQL的字符集为UTF-8,还有配置MSQL的时候端口为:3306.用户名和我们的LINUX用户名一样,都是root密码可以自定义,这些不要选错,MYSQL

CGI编程完全手册(个人学习笔记)

CGI 一.基本原理 CGI:通用网关接口(Common Gateway Interface)是一个Web服务器主机提供信息服务的标准接口。通过CGI接口,Web服务器就能够获取客户端提交的信息,转交给服务器端的CGI程序进行处理,最后返回结果给客户端。 组成CGI通信系统的是两部分:一部分是html页面,就是在用户端浏览器上显示的页面。另一部分则是运行在服务器上的Cgi程序。 它们之间的通讯方式如下图: 服务器和客户端之间的通信,是客户端的浏览器和服务器端的http服务器之间的HTTP 通信,我们只需要知道浏览器请求执行服务器上哪个CGI程序就可以了,其他不必深究细节,因为这些过程不需要程序员去操作。 服务器和CGI程序之间的通讯才是我们关注的。一般情况下,服务器和CGI程序之间是通过标准输入输出来进行数据传递的,而这个过程需要环境变量的协作方可实现。 1.服务器将URL指向一个应用程序 2.服务器为应用程序执行做准备 3.应用程序执行,读取标准输入和有关环境变量 4.应用程序进行标准输出 对于Windows系统而言,还可以通过profile文件进行数据传输(如ini文件),但在这里不做研究。 环境变量在CGI中有着重要的地位!每个CGI程序只能处理一个用户请求,所以在激活一个CGI程序进程时也创建了属于该进程的环境变量。

二.环境变量 对于CGI程序来说,它继承了系统的环境变量。CGI环境变量在CGI程序启动时初始化,在结束时销毁。 当一个CGI程序不是被HTTP服务器调用时,它的环境变量几乎是系统环境变量的复制。当这个CGI程序被HTTP服务器调用时,它的环境变量就会多了以下关于HTTP服务器、客户端、CGI传输过程等项目。 并且经过了URL编码。 ACCEPT:客户机所支持的MIME类型清单,内容如:”image/gif,image/jpeg”

马士兵hibernate学习笔记(原版)-你信不信,我反正是信了

马士兵hibernate学习笔记 课程内容 (6) 1HelloWorld (6) 2Hibernate原理模拟 - 什么是O/R Mapping以及为什么要有O/R Mapping (6) 3常见的0/R框架(了解) (6) 4hibernate基础配置(重点) (6) 5ID生成策略(重点 AUTO) (6) 6Hibernate核心开发接口介绍(重点) (6) 7对象的三种状态(了解) (6) 8关系映射(重点) (6) 9Hibernate査询(HQL) (6) 10在Struts基础上继续完善BBS200 (6) 11性能优化(重点) (6) 12补充话题 (6) 风格 (6) 1先脉络,后细节 (6) 2先操作,后原理 (6) 3重Annotation,轻xml配置文件 (6) 资源 (6) 1http://www. https://www.wendangku.net/doc/b812142351.html, (6) 2hibernate zh_CN文档 (6) 3hibernate annotation references (6) 环境准备 (6) 1下载hibernate-distribution-3.3.2.GA-dist (6) 2下载hibernate-annotations-3[1].4.0.GA (6) 3注意阅读hibernate compatibility matrix(hibernate 网站download) (6) 4下载slf4jl.5.8 (7) Hibernate HelloWorld (7) 1建立新java 项目,名为hibernate_0100_HelloWorld (7) 2学习建User-library-hibernate,并加入相应的jar包 (7) 3引入mysql的JDBC驱动包 (7) 4在mysql中建立对应的数据库以及表 (7) 5建立hibernate 配置文件hibernate.cfg.xml (7) 6建立Student 类 (7) 7建立Student 映射文件 Student.hbm.xml (7)

传智播客Spring25视频教程学习笔记

传智播客Spring2.5视频教程学习笔记1.全面阐释Spring及其各项功能 1.1Spring是什么? Spring是一个开源的控制反转(Inversion of Control ,IoC)和面向切面(AOP)的容器框架.它的主要目得是简化企业开发。 1.2IoC控制反转 所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转。 1.3依赖注入(DI:Dependicy Injection) 所谓依赖注入就是指:在运行期,由外部容器动态地将依赖对象注入到组件中。 1.4面向切面(AOP) 1.5为什么要使用Spring 解耦(各层之间通过接口调用) 提供事务、消息服务 单例模式 AOP支持 辅助类(JDBCTemplate,HibernateTemplate) 支持与Struts,Hibernate,JPA等框架的集成 1.6实例化bean的方式 构造函数(90%使用),静态工厂方法,实例工厂方法 1.使用类构造器实例化 2.使用静态工厂方法实例化 public class OrderFactory { public static OrderServiceBean createOrder(){ return new OrderServiceBean(); } } 3.使用实例工厂方法实例化 public class OrderFactory { public OrderServiceBean createOrder(){ return new OrderServiceBean(); } }

自我学习笔记

?学习时间:2012年10月8日 ?学习内容:FLASH课程 ?参考资料:FLASH动漫创作技法 ?学习的具体内容记录: 看了老师提供的flash网站,我觉得自己还有很多很多知识盲点。还有很多东西需要花时间学习flash。看到网站上有关flash的招聘信息,原来学好flash还有会很多工作机会提供。 Flash可以做很多事情,比如公益广告、MV、环保法制交通灯方面的公益广告、手机动画、贺卡、教学课件。更可以做工作简历,以前只听说过视频、PPT简历,现在还有flash简历,我觉得对于教育技术专业的毕业生而言,把三维编程flash结合起来做成一个基于flash的简历,对于寻求工作会很有帮助,这个也可以作为教育技术毕业生最具体的展示实力的凭证。口说无凭,实干才是真理。用实物来证明自己才是王道。 Flash的功能中,我最喜欢的是公益广告、公司简介这方面的。在flash网站我看到了一个很好的flash公益广告的案例,如果不是在flash模块里看见的估计我会认为它是用视频特效做出来的。该flash展示了一段有关发生车祸时,2位男女主角身体上的伤害,它通过特写心脏、大脑、血管等器官在车祸中具体的变化即损伤,向每位观看者提供了一种视觉上、心里上的反应。给人以最直观的感触,让人清醒的意识到超速、车祸带来的红色恐怖。比任何口头上的描述疼痛都来得有效。因此我觉得flash在公益广告方面会有很大的引导作用。另一方面,flash一般以动画的形式表现出来,小朋友会很喜欢,对于中国下一代的教育有非凡的意义。 对于我自己的学习而言,我借了一本台湾编的flash教程书,我觉得这本书编的很好,对思维的切入,便于理解,上手很轻易。我希望除了听老师课上的东西以外,听过自学能学习更多的东西。在看到很多不错的flash时能细细想一下别人是怎么做出来这种效果的。还有网上很多有关设计的内容,希望这些对以后的积累有所帮助。自己慢慢的积累,以后也能参加短片制作大赛。 ?学习效果自评: 对于flash而言很多画面都是要靠美术功底的,我觉得没有美术功底也不是很重要,可以仿照别人的创作形象。

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)

机器学习个人笔记完整版v5(原稿)

摘要 本笔记是针对斯坦福大学2014年机器学习课程 视频做的个人笔记 黄海广 haiguang2000@https://www.wendangku.net/doc/b812142351.html, qq群:554839127

斯坦福大学2014机器学习教程中文笔记 课程概述 Machine Learning(机器学习)是研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演译。在过去的十年中,机器学习帮助我们自动驾驶汽车,有效的语音识别,有效的网络搜索,并极大地提高了人类基因组的认识。机器学习是当今非常普遍,你可能会使用这一天几十倍而不自知。很多研究者也认为这是最好的人工智能的取得方式。在本课中,您将学习最有效的机器学习技术,并获得实践,让它们为自己的工作。更重要的是,你会不仅得到理论基础的学习,而且获得那些需要快速和强大的应用技术解决问题的实用技术。最后,你会学到一些硅谷利用机器学习和人工智能的最佳实践创新。 本课程提供了一个广泛的介绍机器学习、数据挖掘、统计模式识别的课程。主题包括:(一)监督学习(参数/非参数算法,支持向量机,核函数,神经网络)。(二)无监督学习(聚类,降维,推荐系统,深入学习推荐)。(三)在机器学习的最佳实践(偏差/方差理论;在机器学习和人工智能创新过程)。本课程还将使用大量的案例研究,您还将学习如何运用学习算法构建智能机器人(感知,控制),文本的理解(Web搜索,反垃圾邮件),计算机视觉,医疗信息,音频,数据挖掘,和其他领域。 本课程需要10周共18节课,相对以前的机器学习视频,这个视频更加清晰,而且每课都有ppt课件,推荐学习。 本人是中国海洋大学2014级博士生,2014年刚开始接触机器学习,我下载了这次课程的所有视频和课件给大家分享。中英文字幕来自于https://https://www.wendangku.net/doc/b812142351.html,/course/ml,主要是教育无边界字幕组翻译,本人把中英文字幕进行合并,并翻译剩余字幕,对视频进行封装,归类,并翻译了课程目录,做好课程索引文件,希望对大家有所帮助。部分视频中文字幕由中国海洋大学的博士生翻译。视频已经翻译完毕,如果下载了视频,可以直接在文档中打开视频,内嵌中英文字幕,推荐使用potplayer。 这篇中文笔记,主要是根据视频内容和中文字幕以及ppt来制作,部分来源于网络,如“小小人_V”的笔记,并持续更新。 视频下载链接:https://www.wendangku.net/doc/b812142351.html,/s/1pKLATJl 密码:xn4w 本人水平有限,如有公式、算法错误,请及时指出,发邮件给我,也可以加我qq。 今日发现这个笔记被下载超过3万次,应该说这个笔记有点用,我发现以前一些翻译小

SpringMvc学习笔记(二)通过实例学习注解式控制器

Springmvc学习笔记(二) 通过实例学习注解式控制器 一、注解式控制器简介 Spring2.5之前,我们都是通过实现Controller接口或其实现来定义我们的处理器类。Spring2.5之后引入注解式处理器支持,通过@Controller 和@RequestMapping注解定义我们的处理器类。 通过笔记(一)的例子,我们已经初步认识了基于注解的控制器实现方式。下面我们来详细介绍一下注解式控制器运行流程与使用方法。 @Controller:用于标识是处理器类; @RequestMapping:请求到处理器功能方法的映射规则; @RequestParam:请求参数到处理器功能处理方法的方法参数上的绑定; @ModelAttribute:请求参数到命令对象的绑定; @SessionAttributes:用于声明session级别存储的属性,放置在处理器类上,通常列出模型属性(如@ModelAttribute)对应的名称,则这些属性会透明的保存到session中; @CookieValue:cookie数据到处理器功能处理方法的方法参数上的绑定; @RequestHeader:请求头(header)数据到处理器功能处理方法的方法参数上的绑定; @RequestBody:请求的body体的绑定(通过HttpMessageConverter进行类型转换); @ResponseBody:处理器功能处理方法的返回值作为响应体(通过HttpMessageConverter进行类型转换); @ResponseStatus:定义处理器功能处理方法/异常处理器返回的状态码和原因; @ExceptionHandler:注解式声明异常处理器; @PathVariable:请求URI中的模板变量部分到处理器功能处理方法的方法参数上的绑定,从而支持RESTful架构风格的URI;

lte个人学习笔记整理

TD-LTE学习笔记 LTE接入网络组成: 主要由E-UTRAN基站(eNode B)和接入网关(AGW)组成 eNode B在Node B原有功能基础上,增加了RNC的物理层、MAC层、RRC、调度、接入控制、承载控制、移动性管理和相邻小区无线资源管理等功能,提供相当于原来的RLC/MAC/PHY以及RRC层的功能。 MME:移动性管理实体(Mobility Management Entity,MME) 物理层技术 传输技术: LTE物理层采用带有循环前缀(Cyclic Prefix,CP)的正交频分多址技 术(OFDMA)作为下行多址方式,上行采用基于正交频分复用(OFDMA)传输技术的单 载波频分多址(Single Carrier FDMA,SC-FDMA)峰均比低,子载波间隔为15kHz。 OFDM技术将少数宽带信道分成多数相互正交的窄带信道传输数据,子载波之间可以相互重叠。这种技术不仅可以提高频谱利用率,还可以将宽带的频率选择性信道转化为多个并行的平坦衰落性窄带信道,从而达到抗多径干扰的目的 LTE的核心网EPC(Evolved Packet Core)由MME,S-GW和P-GW组成 无线接口协议栈根据用途分为用户平面协议栈和控制平面协议栈 控制平面协议栈主要包括非接入层(Non‐Access Stratum,NAS)、无线资源控制子层(Radio Resource Control,RRC)、分组数据汇聚子层(Packet Date Convergence Protocol,PDCP)、无线链路控制子层(Radio Link Control,RLC)及媒体接入控制子层(Media Access Control,MAC)。 控制平面的主要功能由上层的RRC层和非接入子层(NAS)实现

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类,并且编写映射文件。

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/b812142351.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/b812142351.html,yout=org.apache.log4j.PatternLayout https://www.wendangku.net/doc/b812142351.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/b812142351.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"); // 对脱管对象进行更改

jsp学习笔记初级

MVC: JSP + + Java: 复习java基础知识 Jsp: JSP、PHP、https://www.wendangku.net/doc/b812142351.html, 三门技术被称为Web 后端开发的3P 技术,其中JSP 依托J2EE 平台更是Web 开发领域的一枝独秀。学好JSP,是进入J2EE 企业开发的第一步。通过本阶段内容的学习,你将能够搭建JSP 的开发环境,了解JSP 的基本语法及内部对象的使用。Servlet: Servlet 是Server Applet 的缩写,也称为服务端小程序。Servlet 技术一直处于不断的发展及进步之中,现在已经成为很多框架的技术基础,比如Spring、Struts2 等。通过本阶段课程的学习,你将了解Servlet的运行原理,Servlet 过滤器的知识并能编写出相对复杂的Java Web 程序。 Javabean: JavaBeans是一个可重复使用的软件组件JavaBeans是一种Java类,通过封装属性和方法成为具有某种功能或者处理某个业务的对象,简称beans。JSP页面应当将数据的处理过程指派给一个或几个beans来完成,我们只需在JSP页面中调用这个beans即可,从而有效的分离的静态工作部分和动态工作部分 JDBC: JDBC 是Java 对关系型数据库进行访问的最主要的API,是Java 数据库编程的技术基础。通过本阶段内容的学习,你能够掌握数据库的基本知识及JDBC 技术的基本原理,并能够使用JDBC编写出对数据库进行增删改查的简单程序 Spring: Spring 是一个开源框架,也是一个基于控制反转、依赖注入的轻量级容器,它的出现大大简化了传统的J2EE 开发模式。Spring 的主要优势之一就是其分层架构,该架构允许使用者自主选择任意件,同时为J2EE 应用程序开发提供集成框架。现在,Spring 已经成为J2EE 企业开发中的标准配置。 Struts2: Spring MVC是一种基于Java的轻量级Web框架,它使用了MVC架构模式的思想,将web 层进行职责解耦,用来简化日常开发。Spring MVC 使用简单,学习成本低,很容易就写出性能优秀的程序。目前越来越多的项目选择使用Spring MVC 作为其Web开发框架。Hibernate: Hibernate 是一个开放源代码的对象关系映射框架,它对JDBC 进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate 可以应用在任何使用JDBC 的场合,既可以在Java 的客户端程序使用,也可以在Servlet/JSP 的Web 应用中使用,最具革命意义的是,Hibernate 可以在应用EJB 的J2EE 架构中取代CMP,完成数据持久化的重任。 初级准备:JDK、Tomcat(Web服务器)、MySQL(数据库)、JDBC(连接数据库)、Eclipse(软件)、设置环境变量* Java:类,继承,实现,接口…… Jsp内置对象:request 对象、response 对象、session对象**、application对象、out JDBC学习实例(先复习数据库): 一:利用MySQL Workbench访问数据库,并且创建表。 1.新建一个数据库jsp_db,并且设为默认数据库(set as default schema)。

相关文档