1、打开SQL Server,找到需要导出的数据库。
2、在需要导出的数据库上右击,选择任务选项中的导出数据选项。
3、SQL Server导入和导出向导窗口中,单击下一步按钮。
4、选择数据源对话框中,选择数据源选项中的Microsoft OLE DB Provider for SQL Server选项。
5、选择使用SQL Server身份验证,输入用户名和密码,选择要导出的数据库,单击下一步。
6、选择目标对话框中,选择目标选项中的Microsoft OLE DB Provider for SQL Server选项。
7、选择使用SQL Server身份验证,输入用户名和密码,单击新建按钮。
8、出现的创建数据库窗口中,在名称处输入一个导出数据库的名字,本例为NewData。
9、可以看到在数据库选项中,多出了一个NewData的名称,单击下一步。
10、指定复制或查询对话框中,选择复制一个或多个表或视图的数据选项,单击下一步。
11、选择源表和源视图对话框中,选择自己要导出的表和视图。
12、运行包对话框中,单击完成按钮。
13、数据就成功导出了。
什么是备份
所谓备份,就是把数据库复制到转储设备的过程。其中,转储设备是指用于放置数据库拷贝的磁带或磁盘。通常也将存放于转储设备中的数据库的拷贝称为原数据库的备份或转储。如下图所示:
ORACLE数据库的备份分为物理备份和逻辑备份两种。物理备份是将实际组成数据库的 *** 作系统文件从一处拷贝到另一处的备份过程,通常是从磁盘到磁带。可以使用 Oracle 的恢复管理器(Recovery Manager,RMAN)或 *** 作系统命令进行数据库的物理备份。逻辑备份是利用SQL语言从数据库中抽取数据并存于二进制文件的过程。Oracle提供的逻辑备份工具是 EXP。
数据库逻辑备份是物理备份的补充。
根据在物理备份时数据库的状态,可以将备份分为一致性备份(consistent backup)和不一致性备份(inconsistent backup)两种:
一致性备份:一致性备份是当数据库的所有可读写的数据库文件和控制文件具有相同的系统改变号(SCN),并且数据文件不包含当前 SCN 之外的任何改变。在做数据库检查点时,Oracle 使所有的控制文件和数据文件一致。对于只读表空间和脱机的表空间,Oracle 也认为它们是一致的。使数据库处于一致状态的唯一方法是数据库正常关闭(用shutdown normal 或 shutdown immediate 命令关闭)。因此,只有在以下条件下的备份是一致性备份:
数据库正常关闭(用shutdown normal 或 shutdown immediate 命令关闭)。
不一致性备份:不一致备份是当数据库的可读写的数据库文件和控制文件的系统改变号(SCN)在不一致条件下的备份。对于一个 724 工作的数据库来说,由于不可能关机,而数据库数据是不断改变的,因此只能进行不一致备份。在 SCN 号不一致的条件下,数据库必须通过应用重做日志使 SCN 一致的情况下才能启动。因此,如果进行不一致备份,数据库必须设为归档状态,并对重做日志归档才有意义。在以下条件下的备份是不一致性备份:
数据库处于打开状态。
数据库处于关闭状态,但是用非正常手段关闭的。例如,数据库是通过 shutdown abort 或机器掉电等等方法关闭的。
什么是恢复
所谓恢复,就是把数据库由存在故障的状态转变为无故障状态的过程。根据出现故障的原因,恢复分为两种类型:
实例恢复。这种恢复是Oracle实例出现失败后,Oracle自动进行的恢复。
介质恢复。这种恢复是当存放数据库的介质出现故障时所做的恢复。本书后面提到的恢复都是指介质恢复。
装载(restore)物理备份与恢复(Recover)物理备份是介质恢复的手段。装载是将备份考回到磁盘,恢复是利用重做日志(物理备份的一部分)修改考回到磁盘的数据文件(物理备份的另一部分),从而恢复数据库的过程。如下图所示:
根据数据库的恢复程度,将恢复方法分为两种类型:
完全恢复:将数据库恢复到数据库失败时数据库的状态。这种恢复是通过装载数据库备份和并应用全部的重做日志做到的。
不完全恢复:将数据库恢复到数据库失败前的某一时刻数据库的状态。这种恢复是通过装载数据库备份和并应用部分的重做日志做到的。进行不完全恢复后必须在启动数据库时用 resetlogs 选项重设联机重做日志。
例如,在上午10:00,由于磁盘损坏导致数据库中止使用。现在使用两种方法进行数据库的恢复,第一种方法使数据库可以正常使用,且使恢复后与损坏时(10:00)数据库中的数据相同,那么第一种恢复方法就属于完全恢复类型;第二种方法能使数据库正常使用,但只能使恢复后与损坏前(例如9:00)数据库中的数据相同,没能恢复数据库到失败时(10:00)数据库的状态,那么第二种恢复方法就属于不完全恢复类型。
事实上,如果数据库备份是一致性的备份,则装载后的数据库即可使用,从而也可以不用重做日志恢复到数据库备份时的点。这也是一种不完全恢复。
备份与恢复的关系
备份一个ORACLE数据库,类似于买医疗保险——在遇到疾病之前不会意识到它的重要性,获得保险金的数量取决于保险单的种类。同理,随着制作备份的种类和频繁程度的不同,数据库发生故障后其恢复的可行性、难度与所花费的时间也不同。
数据库故障是指数据库运行过程中影响数据库正常使用的特殊事件。数据库故障有许多类型,最严重的是介质失败(如磁盘损坏),这种故障如不能恢复将导致数据库中数据的丢失。数据库故障类型有:
语句失败。
用户进程失败。
实例失败。
用户或应用错误 *** 作。这类错误可能是意外地删除了表中的数据等错误 *** 作。
介质失败。如硬盘失败,硬盘中的数据丢失。
自然灾害。如地震、洪水等。
由于故障类型的不同,恢复数据库的方法也不同。通过装载备份来恢复数据库既是常用的恢复手段,也是恢复介质失败故障的主要方法。
备份与恢复要考虑的问题
备份与恢复要考虑以下的三个问题:
备份与恢复策略要考虑的商业、 *** 作、及技术问题
灾难恢复计划的组成
测试备份与恢复策略的重要性
能够进行什么样的恢复依赖于有什么样的备份。作为 DBA,有责任从以下三个方面维护数据库的可恢复性:
使数据库的失效次数减到最少,从而使数据库保持最大的可用性;
当数据库不可避免地失效后,要使恢复时间减到最少,从而使恢复的效率达到最高;
当数据库失效后,要确保尽量少的数据丢失或根本不丢失,从而使数据具有最大的可恢复性。
备份与恢复策略要考虑的商业、 *** 作、及技术问题
作为 DBA,首先需要了解企业是如何使用数据库系统的,以及企业对数据库的可用性,恢复性能,和数据的可恢复性以及恢复时间的要求。然后,DBA 需要使企业的管理人员了解维护这样的数据库的可用性的代价有多大。做到这点的最好方法是评估恢复需要的花费,以及丢失数据给企业带来的损失。
在代价被评估后,就可以进行备份与恢复的讨论了。此时,要定义数据库总体的可用性需求,并根据各项工作对数据库可用性的影响程度来定义工作重点的次序。例如,如果数据库需要 724 的可用性,那么其重要性就高于其它任何工作,其它任何需要关机才能做的工作就不能做。
另外,数据库变化的情况也是备份与恢复策略需要考虑的一个因素。例如,如果数据不断改变,有新数据或数据文件加入,或表结构有大的变化,则应该经常备份;反之,如果数据是静态的或只读的,则备份一次即可。无论如何,应遵从这样一个原则,如果怀疑数据库的可恢复性,就应该备份。
灾难恢复计划的组成
针对灾难恢复,必须回答下述问题:
系统可能出现什么样的灾难恢复情况?
如果出现数据丢失,灾难恢复情况是怎样的?
系统中数据的易变程度如何?
如果出现问题,系统需要多快的速度恢复?
在各种情况下恢复策略的代价,以及相应的花时间重新录入数据的代价
对这些问题的回答组成了灾难恢复计划。
计算机是易坏的。主板上的芯片、主板电路、内存、电源等任何一项不能正常工作,都会导致计算机系统不能正常工作。当然,这些损坏可以修复,不会导致应用和数据的损坏。但是,如果计算机的硬盘损坏,将会导致数据丢失,此时必须用备份恢复数据。
灾难恢复的最重要步骤是设计充足频率的硬盘备份过程。备份过程应该满足系统要求的可恢复性。例如,如果数据库可有较长的关机时间,则可以每周进行一次冷备份,并归档重做日志;但是,如果数据库只有极少的关机时间,则只能从硬件的角度来考虑备份与恢复的问题,例如使用硬盘镜像或双机系统。选择备份策略的依据是:丢是数据的代价与确保数据不丢失的代价之比。
果每天都能备份当然会很理想,但要考虑其现实性。企业都在想办法降低维护成本,现实的方案才可能被采用。只要仔细计划,并想办法达到数据库可用性的底线,花少量的钱进行成功的备份与恢复也是可能的。
DBA 还应以服务协议的形式制订一个可恢复性与可用性的标准文件。该文件应成为讨论DBA 服务,以及服务是否能达到预期标准的依据。这样做可使所有相关人员对同样的预期有潜在的危机感。
测试备份与恢复策略的重要性
备份与恢复策略必须经测试无误后才可使用。如果进行了备份,但不知道该备份是否支持希望的恢复目标则与根本没有备份没有两样。
恢复策略也要考虑虑对环境的依赖性。例如,假如机器的硬盘失效了,供货商能在多长时间内提供一个新的硬盘;在机器需要重新启动时,能找到 *** 作系统管理员吗?
另外一个需要考虑的问题是数据库是否能经受自然的破坏。应在与计算机不同的地方再存储一份备份介质,以免出现自然灾害时主机与备份一起遭到破坏。
最后需要考虑的问题是万一DBA 出现了问题怎么办?后备的DBA能否执行备份策略?他或她能找到支持用的文档吗?这些文档存在吗?
没有比花了大精力指定了好的计划,但没有测试其有效性而使其付诸东流的了。一个好的计划还应容纳人为错误,特别是用于开发的系统。理想的测试计划应包括以下内容:
一系列的测试例子及其状态描述;
测试结果是否成功的标准;
解决这些状态的步骤。
只有在上述情况测试成功的前提下,DBA 才应该考虑把备份
知道用户名,破解密码应该可以,一般数据库密码是字母和数字组成,一般情况是5至10位,你用php语句取字母和数字组合成5至10的字符串,不断连接测试,当连接成功返回密码,这样测试有点慢,只不过两三天程序运行下来应该破解了吧,主要怕别人查到你过度的ip访问会封你的ip,还有mysql可以设置阅读权限,就是指定ip访问,就算你知道密码也不可以查阅或更改。我自己的网站就是设置固定ip访问,指定只有我的服务ip才可以访问。所以说很难的,希望那个外国的服务器没这么严谨吧,如果不知道用户名,基本不太可能。
问题一:在SQL中,附加和分离数据库的目的和意义是什么呢? 附加和分离数据库
一、可以切断数据库的使用 (比如当数据库日志很大占用了空间时,可以用分离数据库的方法来切断数据库,从而删除以前的数据库日志,来节省空间)
实践中碰到 数据库日志 很大(10G)占用了硬盘空间的情况处理:
方法:
1、停掉iis,然后分离数据库
2、修改数据库日志的名字
3、附加数据库,成功后可以删除数据库日志
二、可以在需要更换数据库物理存放地址时使用如果您数据库系统安装在系统盘(比如 C 盘),由于 C 盘容易受病毒侵害,您也许希望您的数据存放在非系统盘(比如 D 盘),要做的这点很简单,您并不需要重装数据库,只要把数据“分离”,然后将相关文件移动到 D 盘的某个目录,接着“附加”数据库即可。
SQL Server 2000允许分离数据库的数据和事务日志文件,然后将其重新附加到同一台或另一台服务器上。分离数据库将从 SQL Server 删除数据库,但是保证在组成该数据库的数据和事务日志文件中的数据库完好无损。然后这些数据和事务日志文件可以用来将数据库附加到任何 SQL Server 实例上,骇使数据库的使用状态与它分离时的状态完全相同。
应注意,只有“使用本数据库的连接”数为0时,该数据库才能分离。所以分离数据库时尽量断开所有对要分离数据库 *** 作的连接,如果还有连接数据库的程序,会出现数据库的连接状态窗口,显示正在连接此数据库的机器以及名称,点击清除按钮将从服务器强制断开现有的连接。
问题二:数据库的分离和附加有什么作用?可以说详细点吗? 一、可以切断数据库的使用 (比如当数据库日志很大占用了空间时,可以用分离数据库的方法来切断数据库,从而删除以前的数据库日志,来节省空间)
实践中碰到 数据库日志 很大(10G)占用了硬盘空间的情况处理:
方法:
1、停掉iis,然后分离数据库
2、修改数据库日志的名字
3、附加数据库,成功后可以删除数据库日志
二、可以在需要更换数据库物理存放地址时使用如果您数据库系统安装在系统盘(比如 C 盘),由于 C 盘容易受病毒侵害,您也许希望您的数据存放在非系统盘(比如 D 盘),要做的这点很简单,您并不需要重装数据库,只要把数据“分离”,然后将相关文件移动到 D 盘的某个目录,接着“附加”数据库即可。
SQL Server 2000允许分离数据库的数据和事务日志文件,然后将其重新附加到同一台或另一台服务器上。分离数据库将从 SQL Server 删除数据库,但是保证在组成该数据库的数据和事务日志文件中的数据库完好无损。然后这些数据和事务日志文件可以用来将数据库附加到任何 SQL Server 实例上,这使数据库的使用状态与它分离时的状态完全相同。
应注意,只有“使用本数据库的连接”数为0时,该数据库才能分离。所以分离数据库时尽量断开所有对要分离数据库 *** 作的连接,如果还有连接数据库的程序,会出现数据库的连接状态窗口,显示正在连接此数据库的机器以及名称,点击清除按钮将从服务器强制断开现有的连接。
问题三:附加数据库是为了更好地使用 附加和分离数据库的意思:
可以切断数据库的使用 (比如当数据库日志很大占用了空间时,可以用分离数据库的方法来切断数据库,从而删除以前的数据库日志,来节省空间)。
分离数据库就是将某个数据库(如student_Mis)从SQL Server数据库列表中删除,使其不再被SQL Server管理和使用,但该数据库的文件(MDF)和对应的日志文件(LDF)完好无损。分离成功后,我们就可以把该数据库文件(MDF)和对应的日志文件(LDF)拷贝到其它磁盘中作为备份保存。
附加数据库就是将一个备份磁盘中的数据库文件(MDF)和对应的日志文件(LDF)拷贝到需要的计算机,并将其添加到某个SQL Server数据库服务器中,由该服务器来管理和使用这个数据库。
问题四:为什么要测试数据库是否附加,这有什么作用呢? 因为 程序就是对数据库的 *** 作,所以要验证 *** 作的数据库是否存在,不一定要附加,只要有数据库管理器中已经有这个数据库,且用户名密码正确;这两个构成程序穿访问数据库的基本条件(一、数据库是否存在;二、程序里定义的 数据库连接字符串是否能正常打开数据)
问题五:附加数据库和还原数据库的区别 1在管理器中将数据分离后,只需要mdf文件即可附加,如果只是将数据库进行了脱机或停止SQL 服务,那么mdf和ldf文件都需要才能附加(SQL不允许在使用的状态下复制数据库文件)
2没啥区别吧,都是新产生一个库,也就是对原来库的备份。
3附加和还原都可以在不创建一个新库的情况下进行附加或还原 *** 作
4同上。
问题六:数据库索引有什么作用和好处? 数据库索引是为了增加查询速度而对表字段附加的一种标识。见过很多人机械的理解索引的概念,认为增加索引只有好处没有坏处。这里想把之前的索引学习笔记总结一下: 首先明白为什么索引会增加速度,DB在执行一条Sql语句的时候,默认的方式是根据搜索条件进行全表扫描,遇到匹配条件的就加入搜索结果 。如果我们对某一字段增加索引,查询时就会先去索引列表中一次定位到特定值的行数,大大减少遍历匹配的行数,所以能明显增加查询的速度。那么在任何时候都应该加索引么?这里有几个反例:1、如果每次都需要取到所有表记录,无论如何都必须进行全表扫描了,那么是否加索引也没有意义了。2、对非唯一的字段,例如“性别”这种大量重复值的字段,增加索引也没有什么意义。3、对于记录比较少的表,增加索引不会带来速度的优化反而浪费了存储空间,因为索引是需要存储空间的,而且有个致命缺点是对于update/insert/delete的每次执行,字段的索引都必须重新计算更新。 那么在什么时候适合加上索引呢?我们看一个Mysql手册中举的例子,这里有一条sql语句: SELECT cpanyID, cpanyName FROM panies c, User u WHERE cpanyID = ufk_panyID AND cnumEmployees >= 0 AND cpanyName LIKE '%i%' AND ugroupID IN (SELECT ggroupID FROM Groups g WHERE ggroupLabel = 'Executive') 这条语句涉及3个表的联接,并且包括了许多搜索条件比如大小比较,Like匹配等。在没有索引的情况下Mysql需要执行的扫描行数是77721876行。而我们通过在panyID和groupLabel两个字段上加上索引之后,扫描的行数只需要134行。在Mysql中可以通过Explain Select来查看扫描次数。可以看出来在这种联表和复杂搜索条件的情况下,索引带来的性能提升远比它所占据的磁盘空间要重要得多。 那么索引是如何实现的呢?大多数DB厂商实现索引都是基于一种数据结构――B树。因为B树的特点就是适合在磁盘等直接存储设备上组织动态查找表。B树的定义是这样的:一棵m(m>=3)阶的B树是满足下列条件的m叉树: 1、每个结点包括如下作用域(j, p0, k1, p1, k2, p2, ki, pi) 其中j是关键字个数,p是孩子指针 2、所有叶子结点在同一层上,层数等于树高h 3、每个非根结点包含的关键字个数满足[m/2-1]>
问题七:什么时候使用数据库的附加和分离?附加和分离的关系是什么? 使用数据库的附加:添加其他数据库时使用;
分离:不需要海个数据库时使用;
附加和分离的关系是:加载和卸载的关系。
问题八:请问SQL数据库分离与附加的作用和功能是什么?有哪位朋友可以告诉我? 一、可以切断数据库的使用 (比如当数据库日志很大占用了空间时,可以用分离数据库的方法来切断数据库,从而删除以前的数据库日志,来节省空间)
实践中碰到 数据库日志 很大(10G)占用了硬盘空间的情况处理:
方法:
1、停掉iis,然后分离数据库
2、修改数据库日志的名字
3、附加数据库,成功后可以删除数据库日志
二、可以在需要更换数据库物理存放地址时使用如果您数据库系统安装在系统盘(比如 C 盘),由于 C 盘容易受病毒侵害,您也许希望您的数据存放在非系统盘(比如 D 盘),要做的这点很简单,您并不需要重装数据库,只要把数据“分离”,然后将相关文件移动到 D 盘的某个目录,接着“附加”数据库即可。
SQL Server 2000允许分离数据库的数据和事务日志文件,然后将其重新附加到同一台或另一台服务器上。分离数据库将从 SQL Server 删除数据库,但是保证在组成该数据库的数据和事务日志文件中的数据库完好无损。然后这些数据和事务日志文件可以用来将数据库附加到任何 SQL Server 实例上,这使数据库的使用状态与它分离时的状态完全相同。
应注意,只有“使用本数据库的连接”数为0时,该数据库才能分离。所以分离数据库时尽量断开所有对要分离数据库 *** 作的连接,如果还有连接数据库的程序,会出现数据库的连接状态窗口,显示正在连接此数据库的机器以及名称,点击清除按钮将从服务器强制断开现有的连接。
问题九:在mysql数据库中为字段添加索引,是什么意思,有什么好处,谢谢!! 字段添加索引的语句可以百度找 mysql 添加索引命令。
索引的好处在于可以讲指定列进行排序,提高检索的速度。
一个简单的例子:
某个列的数据是
id name
12 小李
10 小龙
5 小青
99 小红
id列创建索引后就会生成一个索引表
id inde订
5 3
10 2
12 1
99 4
当查询 where id =10的 时候,使用到索引表。由于10下面是15,不可能有大于10的数。所以不再进行扫描表 *** 作。返回第二条数据,对应回主表的第二行。
这样就提高了查询的速度,如果没添加索引;则扫描整张主表。
索引的类型,什么列需要加索引等相关信息的你还需百度查询一下,这里告诉你的是一些基本的概念。
hibernate 简介:
hibernate是一个开源框架,它是对象关联关系映射的框架,它对JDBC做了轻量级的封装,而我们java程序员可以使用面向对象的思想来 *** 纵数据库。
hibernate核心接口
session:负责被持久化对象CRUD *** 作
sessionFactory:负责初始化hibernate,创建session对象
configuration:负责配置并启动hibernate,创建SessionFactory
Transaction:负责事物相关的 *** 作
Query和Criteria接口:负责执行各种数据库查询
hibernate工作原理:
1通过Configuration config = new Configuration()configure();//读取并解析hibernatecfgxml配置文件
2由hibernatecfgxml中的<mapping resource="com/xx/Userhbmxml"/>读取并解析映射信息
3通过SessionFactory sf = configbuildSessionFactory();//创建SessionFactory
4Session session = sfopenSession();//打开Sesssion
5Transaction tx = sessionbeginTransaction();//创建并启动事务Transation
6persistent operate *** 作数据,持久化 *** 作
7txcommit();//提交事务
8关闭Session
9关闭SesstionFactory
为什么要用hibernate:
1 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
2 Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作
3 hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。
4 hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。
Hibernate是如何延迟加载get与load的区别
1 对于Hibernate get方法,Hibernate会确认一下该id对应的数据是否存在,首先在session缓存中查找,然后在二级缓存中查找,还没有就查询数据库,数据 库中没有就返回null。这个相对比较简单,也没有太大的争议。主要要说明的一点就是在这个版本(bibernate32以上)中get方法也会查找二级缓存!
2 Hibernate load方法加载实体对象的时候,根据映射文件上类级别的lazy属性的配置(默认为true),分情况讨论:
(1)若为true,则首先在Session缓存中查找,看看该id对应的对象是否存在,不存在则使用延迟加载,返回实体的代理类对象(该代理类为实体类的子类,由CGLIB动态生成)。等到具体使用该对象(除获取OID以外)的时候,再查询二级缓存和数据库,若仍没发现符合条件的记录,则会抛出一个ObjectNotFoundException。
(2)若为false,就跟Hibernateget方法查找顺序一样,只是最终若没发现符合条件的记录,则会抛出一个ObjectNotFoundException。
这里get和load有两个重要区别:
如果未能发现符合条件的记录,Hibernate get方法返回null,而load方法会抛出一个ObjectNotFoundException。
load方法可返回没有加载实体数据的代 理类实例,而get方法永远返回有实体数据的对象。
(对于load和get方法返回类型:好多书中都说:“get方法永远只返回实体类”,实际上并不正 确,get方法如果在session缓存中找到了该id对应的对象,如果刚好该对象前面是被代理过的,如被load方法使用过,或者被其他关联对象延迟加 载过,那么返回的还是原先的代理对象,而不是实体类对象,如果该代理对象还没有加载实体数据(就是id以外的其他属性数据),那么它会查询二级缓存或者数 据库来加载数据,但是返回的还是代理对象,只不过已经加载了实体数据。)
总之对于get和load的根本区别,一句话,hibernate对于 load方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,如果在使用过程中发现了问题,只能抛异常;而对于get方 法,hibernate一定要获取到真实的数据,否则返回null。
Hibernate中怎样实现类之间的关系(如:一对多、多对多的关系)
类与类之间的关系主要体现在表与表之间的关系进行 *** 作,它们都市对对象进行 *** 作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的many-to-one、one-to-many、many-to-many、
说下Hibernate的缓存机制:
Hibernate缓存的作用:
Hibernate是一个持久层框架,经常访问物理数据库,为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能。缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据
Hibernate缓存分类:
Hibernate缓存包括两大类:Hibernate一级缓存和Hibernate二级缓存
Hibernate一级缓存又称为“Session的缓存”,它是内置的,意思就是说,只要你使用hibernate就必须使用session缓存。由于Session对象的生命周期通常对应一个数据库事务或者一个应用事务,因此它的缓存是事务范围的缓存。在第一级缓存中,持久化类的每个实例都具有唯一的OID。
Hibernate二级缓存又称为“SessionFactory的缓存”,由于SessionFactory对象的生命周期和应用程序的整个过程对应,因此Hibernate二级缓存是进程范围或者集群范围的缓存,有可能出现并发问题,因此需要采用适当的并发访问策略,该策略为被缓存的数据提供了事务隔离级别。第二级缓存是可选的,是一个可配置的插件,在默认情况下,SessionFactory不会启用这个插件。
什么样的数据适合存放到第二级缓存中?
1 很少被修改的数据
2 不是很重要的数据,允许出现偶尔并发的数据
3 不会被并发访问的数据
4 常量数据
不适合存放到第二级缓存的数据?
1经常被修改的数据
2 绝对不允许出现并发访问的数据,如财务数据,绝对不允许出现并发
3 与其他应用共享的数据。
Hibernate查找对象如何应用缓存?
当Hibernate根据ID访问数据对象的时候,首先从Session一级缓存中查;查不到,如果配置了二级缓存,那么从二级缓存中查;如果都查不到,再查询数据库,把结果按照ID放入到缓存
删除、更新、增加数据的时候,同时更新缓存
Hibernate管理缓存实例
无论何时,我们在管理Hibernate缓存(Managing the caches)时,当你给save()、update()或saveOrUpdate()方法传递一个对象时,或使用load()、 get()、list()、iterate() 或scroll()方法获得一个对象时, 该对象都将被加入到Session的内部缓存中。
当随后flush()方法被调用时,对象的状态会和数据库取得同步。 如果你不希望此同步 *** 作发生,或者你正处理大量对象、需要对有效管理内存时,你可以调用evict() 方法,从一级缓存中去掉这些对象及其集合。
Hibernate的查询方式
Sql、Criteria,object comptosition
Hql:
1、 属性查询
2、 参数查询、命名参数查询
3、 关联查询
4、 分页查询
5、 统计函数
如何优化Hibernate?
1使用双向一对多关联,不使用单向一对多
2灵活使用单向一对多关联
3不用一对一,用多对一取代
4配置对象缓存,不使用集合缓存
5一对多集合使用Bag,多对多集合使用Set
6 继承类使用显式多态
7 表字段要少,表关联不要怕多,有二级缓存撑腰
hibernate的开发步骤:
开发步骤
1)搭建好环境
引入hibernate最小的jar包
准备Hibernatecfgxml启动配置文件
2)写实体类(pojo)
3)为实体类写映射文件"Userhbmxml"
在hibernatecfgxml添加映射的实体
4)创建库表
5)写测试类
获得Configuration
创建SessionFactory
打开Session
开启事务
使用session *** 作数据
提交事务
关闭资源
以上就是关于sql数据库如何导出全部的内容,包括:sql数据库如何导出、什么是备份策略、知道sql数据库的IP、用户名和密码,怎样把远程网站的数据库下载到本地等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)