- 博客(67)
- 收藏
- 关注
原创 Hibernate是如何延迟加载的
Hibernate对象关系映射提供延迟的与非延迟的对象初始化。非延迟加载在读取一个对象的时候会将与这个对象所有相关的其他对象一起读取出来。这有时会导致成百的(如果不是成千的话)select语句在读取对象的时候执行。这个问题有时出现在使用双向关系的时候,经常会导致整个数据库都在初始化的阶段被读出来了。当然,你可以不厌其烦地检查每一个对象与其他对象的关系,并把那些最昂贵的删除,但是到最后,我们可能会因
2011-12-24 13:58:32
3646
原创 Load和get方法的区别
1. 读取时机不同(当lazy=true的时候)load是采用延迟机制(load语句不读库,等使用非主键时才去读库),而get不采用延迟机制(get语句时马上读库);2. 搜索不到数据时的情况当搜索的数据不存在的时候,load依然会返回一个对象,在你使用该对象的非主键数据时,会抛出异常;当搜索的数据不存在的时候,get会返回一个null;其实看似load到用的时候才去读数据
2011-12-24 13:58:11
870
原创 在数据库中条件查询很慢的时候,如何优化?
1.建索引(a 提高查询检索的性能b 创建唯一索引c 创建主键d归类)2.减少表之间的关联3.优化sql,尽量让sql很快定位数据,不要让sql做全表查询,应该走索引,把数据量大的表排在前面4.简化查询字段,没用的字段不要,已经对返回结果的控制,尽量返回少量数据
2011-12-24 13:57:47
1031
原创 Hibernate的对象状态是什么?
1)瞬态:表示该实体对象在内存中是自由存在的,也就是说与数据库中的数据没有任何的关联即,该实体从未与任何持久化上下文联系过,没有持久化标识(相当与主键)。瞬态实体的特征有: 与数据库中的记录没有任何关联,也就是没有与其相关联的数据库记录 与Session没有任何关系,也就是没有通过Session对象的实例对其进行任何持久化的操作。(2)持久态:指该实体对象处于H
2011-12-24 13:57:18
373
原创 Cascade和inverse的区别
可以这样理解,cascade定义的是关系两端对象到对象的级联关系;而inverse定义的是关系和对象的级联关系。inverse只对set+one-to-many(或many-to-many)有效,对many-to-one, one-to-one无效。cascade对关系标记都有效。inverse对集合对象整体起作用,cascade对集合对象中的一个一个元素起作用,如果集合为空,那么casc
2011-12-24 13:56:41
468
原创 类与类之间的有哪几种关系
1.继承:是说子类获得父类的功能的同时,还可以扩展自己的功能。 2.依赖:两个相对独立的东东(A和B),当A负责构造B时,A与B形成依赖关系,即A使用B。 3.关联:两个相对独立的东东(A和B),当A对象持有B对象的时候,形成关联关系。
2011-12-24 13:56:13
936
原创 Oracle数据运用那种主键生成策略
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
2011-12-24 13:55:30
380
原创 Hibernate中复合主键的配置
Hibernate中复合主键的配置 第一种方式class User{ String name; Stirng addr; int age; ..........}如果name和addr是联合主键,那么配置可以如下: 第二种方式:class User{ UserKey
2011-12-24 13:54:53
241
原创 hibrnate内部缓存分析
缓存的作用主要用来提高性能,可以简单的理解成一个Map;使用缓存涉及到三个操作:把数据放入缓存、从缓存中获取数据、删除缓存中的无效数据。一、hibrnate内部缓存分析:1、一级缓存:Session级别的缓存 特点:生命周期短、作用范围小。随着session的结束而结束! 缺陷:没有任何的保护,不能存过多数据,否则缓存会溢出!共享范围太小。什么时候将数据
2011-12-16 17:01:13
530
原创 继承映射
一、Casade用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似的操作,常用的cascade: none,all,save-update ,delete, lock,refresh,evict,replicate,persist, merge,delete-orphan(one-to-many) 。一般对many-to-one,many-to-many不设
2011-12-14 07:53:30
282
原创 组件映射和集合映射
组件映射:组件映射:在实体类中:private Set hobbies;在映射文件中: 用来指定外键列 用来指定元素在配置文件中:"com/hbsi/domain/Student.hbm.xml" />在测试类中:try{ session=HibrnateUtil.getSession();
2011-12-12 15:31:43
401
原创 各种关联映射
一、多对一:employee表与department表1、插入1-1、外键允许为空的时候:保存顺序:先保存了department表,后保存了employee表执行结果:Hibernate: insert into Department (name) values (?)Hibernate: insert into Employee (name, depart_id) value
2011-12-09 11:48:03
419
原创 Hibernate中的复杂查询
在hibrnate中get()方法的查询能力比较弱,只能按id查询。进而引出hql和critae两种比较复杂的查找方法2-1、HQL(Hibernate Query Language) 面向对象的查询语言,与SQL不同,HQL中的对象名是区分大小写的(除了JAVA类和属性其他部分不区分大小写);HQL中查的是对象而不是和表,并且支持多态;HQL主要通过Query来操作,Query的创
2011-12-07 18:55:18
3429
原创 hibrnate的基本概念和curd
一、开发实现的细节1、 domain实体类的限制a) 必须有默认的构造方法:hibrnate会利用反射机制生成相对应的实体对象时会调用该类的无参构造方法User user=User.class.newInstance();b) 主键id (可选) c) 类是非final的,对子类的生成有影响 (可选) 2、 映射文件一个
2011-12-06 15:01:41
723
原创 hibrnate
一、java是面向对象模型关系、数据库中是关系模型 两者是不匹配的,将两者进行转换:1-1、以前在jdbc中手动完成:1、 在jdbc中手动完成关系模型转换成对象模型Rs读取出来的结果集存到对象时2、 在jdbc中手动完成对象模型转换成关系模型为占位符赋值时 由于以上方法比较繁琐。所以引进了以下框架,进行二者进行转换1-2、使用orm框架(对
2011-12-05 11:45:25
735
原创 文件下载
在web应用中实现文件下载的两种方式: ·超链接直接指向下载资源 ·程序实现下载需设置两个响应头·设置Context-type的值为:application/x-msdownload。Web服务器需要告诉留言器其输出的内容的类型不是普通的内容类型或者htnl文件,而是一个要存到本地的 下载文件·web服务器希望留言器不直接处理响应
2011-11-27 12:39:13
442
原创 上传文件的一些细节:
1、 文件上传中文乱码:upload.setHeaderEncoding(“ ”);2、 普通输入项的乱码:item.getString(“ ”);3、 防止用户不再文件上传的输入项输入上传文件:if(!filename.trim,eques(“”)){}4、 临时文件删除问题:factory.setRepository(new File(this.getServletCon
2011-11-24 12:13:36
924
原创 文件上传
·实现web开发中的文件上传功能,需完成两个步骤: 1、在web页面中添加传输项(jsp页面或html页面)1-1·标签用于在web页面中添加文件上传输入项,设置文件上传输入项时需注意: ·必须设置input输入项的name属性,否则浏览器将不会发送上传的数据·必须把form的enctype属性值设为multipart/form-
2011-11-23 13:12:41
326
原创 使用jdbc编写查询框架
一、使用jdbc编写查询框架除SQL语句不同之外,根据操作的实体不同,对ResultSet的映射也各不相同,因此可义一个query方法,除以参数形式接收变化的SQL语句外,可以使用策略模式由qurey方法的调用者决定如何把ResultSet中的数据映射到实体对象中在DBManager类中-------------------此类是一个数据库连接池和框架类public class DBM
2011-11-22 14:15:25
406
原创 数据库连接池
一、编写数据库连接池·实现javax.sql.DataSource接口,有getConnection()和getConnection(String username,String password)·实现DataSource接口。并实现连接池功能的步骤:1、在DataSource构造函数中批量创建与数据库的连接,并把创建的连接加入LinkedLIist对象中2、实现getConne
2011-11-21 18:27:52
443
转载 MySQL存储过程详解
1. 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希
2011-11-18 11:21:07
215
原创 JDBC的MYSQL
一、处理大文本首先我们在mysql中建一个表名字是create table testclob( id int primary key auto_increment,resume text) 然后,我们拷入.com.mysql.jdbc.driver.驱动我们把数据存入数据库中,在这里呢我用 的是数据库连接池。 我们创建一个类,用于创建测试大文本.这个累的名字是D
2011-11-18 11:19:24
406
原创 国际化标签后续
、如果一个字符中包含了多个与国家化相关的数据,可以使用MessageFormat类对这些数据进行批量处理。利用占位符将含有国际化相关的数据的字符串转换成模式字符串,MessageFormat类可以接受一个参数数组,以替换文本中的每一个占位符例如: 1、//模式字符串,即包含占位符的字符串,将时间、数字、货币等多个被占位符代替String pattern="At {0
2011-11-15 14:37:33
263
原创 国际化
一、具备的特征:1、对于程序中使用的文本元素(例如:菜单栏、导航栏、错误提示、状态信息等),需要根据来访者的地区和国家,选择不同语言的文本为之服务2、对于程序中动态生成的数据(例如:日期、货币),软件应能根据当前的国家或地区的文化习惯进行显示二、固定文本元素的国际化·可以把固定不变的文本信息写到一个properties中,并根据不同的国家编写不同的properties文件。这一组p
2011-11-14 15:45:19
687
原创 自定义标签的案例
一、标签 标签处理器 private booleantest; public void setTest(boolean test) { this.test = test; } @Override public void doTag()throws JspException, IOException
2011-11-10 13:25:43
346
原创 简单标签
简单标签实现了SimpleTag接口的标签通常成为简单标签setJspContext方法:用于把jsp页面的pageContext对象传递给标签处理器对象,从而通过pageContext对象获得web编程中的其他的八个内置对象(request、response、….)setParent方法:用于把父标签处理对象传递给当前标签处理器对象getParent方法:用于获得当前标签处理器对
2011-11-09 13:29:43
542
原创 自定义标签
自定义标签移除jsp页面中的java代码创建步骤:(1) 标签处理器-----java类,直接或间接的实现专门的tag接口(2) 编写一个名字为 .tld 标签库描述符文件(3) 在jsp页面中使用自定义标签等价于 Tag接口的执行流程Jsp引擎将遇到自定义标签时,首先创建标签的实例对象,然后按照jsp规范定义的通信规则一
2011-11-08 18:39:22
352
原创 Servlet对象
ServletConfig对象l 在Servlet的配置文件中,可以使用一个或多个标签为servlet配置一些初始化参数。 当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet。进而,程序员通过S
2011-11-07 20:51:31
956
原创 Servlet的一些细节3
Servlet的一些细节(6)如果某个Servlet的映射路径仅仅为一个正斜杠(/),那么这个Servlet就成为当前Web应用程序的缺省Servlet。凡是在web.xml文件中找不到匹配的元素的URL,它们的访问请求都将交给缺省Servlet处理,也就是说,缺省Servlet用于处理所有其他Servlet都不处理的访问请求。在\conf\web.xml文件中,注册了一个名称
2011-11-07 20:50:47
291
原创 Servlet的一些细节2
Servlet的一些细节(3)对于如下的一些映射关系:Servlet1 映射到 /abc/* Servlet2 映射到 /* Servlet3 映射到 /abc Servlet4 映射到 *.do Servlet的一些细节(4)Servlet是一个供其他Java程序(Servlet引擎)调用的Java类,它不能独立运行,它的运行完全由Servlet引擎来控制和调度。
2011-11-07 20:50:05
239
原创 Servlet的一些细节
Servlet的一些细节(1)由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web.xml文件中使用元素和元素完成。元素用于注册Servlet,它包含有两个主要的子元素:和,分别用于设置Servlet的注册名称和Servlet的完整类名。一个元素用于映射一个已注册的Servlet的
2011-11-07 20:49:30
250
原创 Servlet
在Eclipse中开发ServletExample:web工程的名称,该工程部署时,在webapps目录下就会有一个example的web应用Src:Java程序的开发目录,该目录下编写的所有j程序在部署时,会自动部署到example/web-inf/classes目录下。Webroot:webroot对应于web应用的根目录,该目录下的所有子目录和子文件在部署时,会原封不动的发布到w
2011-11-07 20:48:57
195
原创 Servlet简介
Servlet简介Servlet是sun公司提供的一门用于开发动态web资源的技术。Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:编写一个Java类,实现servlet接口。把开发好的Java类部署到web服务器中。快速入门,用servlet向浏览器输出“hello servl
2011-11-07 20:48:10
192
原创 HTTP实用头字段
HTTP实用头字段HTTP请求头字段Range头指示服务器只传输一部分Web资源。这个头可以用来实现断点续传功能。Range字段可以通过三种格式设置要传输的字节范围:Range: bytes=1000-2000传输范围从1000到2000字节。Range: bytes=1000- 传输Web资源中第1000个字节以后的所有内容。R
2011-11-07 20:37:27
212
原创 HTTP响应的细节——状态行
HTTP响应的细节——状态行状态行 格式: HTTP版本号 状态码 原因叙述 举例:HTTP/1.1 200 OK状态码用于表示服务器对请求的处理结果,它是一个三位的十进制数。响应状态码分为5类,如下所示:状态码含义100~199表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程
2011-11-07 20:36:52
782
原创 HTTP请求的细节——消息头
HTTP请求的细节——消息头用于HTTP请求中的常用头Accept: text/html,image/* Accept-Charset: ISO-8859-1Accept-Encoding: gzip,compressAccept-Language: en-us,zh-cn Host: www.it315.org:80If-Modified-Since:
2011-11-07 20:35:54
407
原创 HTTP请求的细节
HTTP请求客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。一个完整的HTTP请求包括如下内容: 一个请求行、若干消息头、以及实体内容,如下所示 :举例:GET /books/java.html HTTP/1.1 ç请求行 请求行用于描述客户端的请求方式、请求资源名称,以及使用的HTTP协议版本号 Acce
2011-11-07 20:34:40
266
原创 什么是HTTP协议
客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器通迅的格式。使用telnet程序连上web服务器,并使用HTTP协议获取某个页面,快速了解 HTTP协议的作用。安装IE浏览器插件HttpWatch,查看IE浏览器通过HTTP协议获取某个页面。HTTP协议简介HTTP是hypertext transfer
2011-11-07 20:27:13
380
翻译 WEB应用的组成结构
虚似目录的映射有三种方式:1、在server.xml文件的host元素中配置2、在Tomcat6中,不再建议在server.xml文件中配置context元素,细节查看tomcat服务器关于context元素(查看API http://localhost:8080/docs/config/context.html)的说明3、让tomcat自动映射: tomcat服务器会自动管理weba
2011-11-07 20:09:49
425
原创 WEB应用程序
WEB应用程序指供浏览器访问的程序,通常也简称为web应用。 一个web应用由多个静态web资源和动态web资源组成,如:html、css、js文件Jsp文件、java程序、支持jar包、配置文件等等…..组成web应用的这些文件通常我们会使用一个目录组织,这个目录称之为web应用所在目录。 Web应用开发好后,若想供外界访问,需要把web应用所在目录交给web服务
2011-11-07 20:09:03
269
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人