精华内容
下载资源
问答
  • 用户做查询操作时,都会将查询的对象存储到一级缓存中。 2.用户做更新操作时,都会先将操作的对象存储到缓存中。然后通过session.flush()将一级缓存与数据库同步。 二、一级缓存中数据获取 用户做查询...

    一、一级缓存中的数据存储

    	
    		1.用户做查询操作时,都会将查询的对象存储到一级缓存中。
    		2.用户做更新操作时,都会先将操作的对象存储到缓存中。然后通过session.flush()将一级缓存与数据库同步。
    		
    

    二、一级缓存中的数据获取

    	
    	用户做查询操作时,
    	
    			1.如果是简单主键查询,都会先从缓存中获取数据。
    			  如果没有,才会到数据库中查找数据,
    				  		get()、load() 主键查询
    				  		iterator()      iterator()底层也是简单的主键查询
    				
    			2.如果是批量查询,则会直接从数据库中获取数据。
    						list()
    			
    
    	
    	
    		     get()、load()
    					   首先会从一级缓存中获取数据,如果没有才会到数据库查询数据。
    					   同时将查询的数据存储到缓存中。
    			  
    		     list()
    				  	   不会从一级缓存中获取数据。
    				  	   直接从数据库中获取数据。只生成一条sql语句。
    				  	   同时将查询的数据存储到缓存中。
    		
    		     iterator()
    			  	       会从缓存中获取数据。
    			  	       首先生成一条查询主键ID的语句,
    			  	       然后调用it.next(),根据主键ID查询。首先会从一级缓存中获取数据,如果没有才会到数据库中查找数据。
    	
    
    

    三、一级缓存与数据库的同步( 持久化对象与数据库的同步)

    		
    		1.用户做更新操作时,首先会将对象转化为持久化对象。再根据相关操作对对象作出相关标记。
    				 
    				 save()  保存对象到一级缓存,并打上保存标记
    				 update() 修改对象到一级缓存,并打上修改标记。
    				 delete()  删除对象到一级缓存,并打上删除标记。
    				 saveOrUpdate()  保存或修改对象,并打上相关标记。
    		
    		2.调用session.flush()生成sql语句,并执行。将一级缓存与数据库同步。
    		  它会根据持久化对象的标记生成不同的sql语句,并执行。
    		  		
    

    四、 用户与一级缓存、数据库交互顺序

    	
    		查询对象:
    				如果是简单主键查询,首先会先从缓存中查找对象,如果没有就会从数据库中查找,然后存储到缓存中。
    				如果是批量查询,则直接从数据库中获取数据,
    					
    			
    		更新对象(增、删、改):		
    					首先将更新的对象存储或更新到缓存中,并打上相应的标记。
    					当事务提交时,再根据标记进行提交缓存中的数据。
    
    

    五、其他

    5.1 get()\load()

    
    	get():
    			1.立即加载。
    			2.获取的对象是对象。
    			3.如果查询的对象不存在,返回NUll。
    	
    	load()
    			1.延时加载。只有在使用对象时,才查询。
    			2.获取的是代理对象。其作用就是实现延时加载。
    			3.如果查询的对象不存在,则返回一个异常ObjectNotFoundException 。
    			4.如果session关闭,第一次使用load()获取的代理对象,则会报错。
    			
    

    5.2 list()\iterator()

    	
    	list()
    			直接生成一条sql语句。从数据库中查询数据,
    	
    	
    	Iterator it=qr.iterator()
    	it.next()
    			首先会生成一条sql语句,查询所有符合条件的数据的主键ID。
    			然后在根据主键ID,一条一条查询数据。
    			
    			iterator() -- 首先会生成一条sql语句,查询所有符合条件的数据的主键ID。
    			it.next()--  然后根据ID一条一条查询数据。
    			
    

    5.3 多条sql何为一条sql

    	
    	1.用户操作只与一级缓存进行交互,用户多次修改数据,也只是修改一级缓存中的数据。
    	2.只有调用session.flush()\session.getTracsaction.commit() 时才会生成sql。将一级缓存与数据库同步。
    	
    	3.虽然用户多次修改数据,但是也只是更新了持久化对象。
    	  用户调用session.flush()时,它根据持久化对象的更新标志,然后生成sql作出同步。
    	  
    
    
    	public static void main(String[] args) {
    			
    		session.beginTransaction();
    		
    		UserEntity user=(UserEntity) session.get(UserEntity.class, 2);
    		
    		//修改一次
    		user.setAge(12);
    		session.update(user);
    		
    		//修改两次
    		user.setAge(13);
    		session.update(user);
    		
    		session.flush();
    		
    	}
    	
    

    5.4 session.flush()\session.getTracsaction.comit()

    		session.flush()
    						生成一条sql语句,将一级缓存与数据库同步。
    		
    		session.getTracsaction.comit()
    						生成一条sql语句,将一级缓存与数据库同步。
    						并提交事务。
    						【它内部隐式调用了session.flush()】
    		
    		不同点:
    				如果只使用了session.flush(),只会生成sql并执行。
    				但最后由于事务没提交,数据依旧回滚。
    				
    				如果只使用了session.getTracsaction.comit()。
    				它不仅会生成sql并执行,
    				还会提交事务,将执行的sql数据持久化。
    
    

    5.5 update() 的变形

    5.5.1 使用update()方法做更新
    	public static void main(String[] args) {
    			
    		session.beginTransaction();
    		
    		UserEntity user=(UserEntity) session.get(UserEntity.class, 2);
    		
    		//修改一次
    		user.setAge(12);
    		session.update(user);
    		
    		session.getTransaction().commit();
    		
    	}
    
    5.5.1 使用update()方法的变形做更新
    	
    	public static void main(String[] args) {
    			
    		session.beginTransaction();
    		
    		UserEntity user=(UserEntity) session.get(UserEntity.class, 2);
    		
    		//修改一次
    		user.setAge(122);
    		
    		session.getTransaction().commit();
    		
    	}
    

    5.6 session.flush() 会将一级缓存与数据库同步,同时重置持久化对象的状态。

    5.6.1 将多条sql合成了一条。只更新一次
    	public static void main(String[] args) {
    			
    		session.beginTransaction();
    		
    		UserEntity user=(UserEntity) session.get(UserEntity.class, 2);
    		
    		//修改一次
    		user.setAge(122);
    		
    		user.setAge(144);	
    		
    		session.flush();
    	}
    
    5.6.2 session.flush()重置持久化对象的状态,生成两条sql
    public static void main(String[] args) {
    			
    		session.beginTransaction();
    		
    		UserEntity user=(UserEntity) session.get(UserEntity.class, 2);
    		
    		//修改一次
    		user.setAge(111);
    		
    		session.flush();
    
    		user.setAge(222);	
    		
    		session.flush();
    	}
    	
    

    5.7 sql的创建时间

    	
    		只有调用sesison.flush() 或session.getTransaction.commit()方法时,
    		才会生成sql并执行。否则不会生成sql语句。
    	
    
    5.7.1 session的更新操作操作的只是持久化对象,不会生成sql
    	public static void main(String[] args) {
    			
    		session.beginTransaction();
    		
    		UserEntity user=(UserEntity) session.get(UserEntity.class, 2);
    		
    		//修改一次
    		user.setAge(1112);
    		
    		session.update(user);
    	}
    

    在这里插入图片描述

    5.7.2 使用session.flush()会生成sql
    	public static void main(String[] args) {
    			
    		session.beginTransaction();
    		
    		UserEntity user=(UserEntity) session.get(UserEntity.class, 2);
    		
    		//修改一次
    		user.setAge(1112);
    		
    		session.update(user);
    		
    		session.flush();
    	}
    

    在这里插入图片描述

    展开全文
  • 用Synonym 同义词拥有如下好处:节省大量的数据库空间,对不同用户的操作一张...扩展的数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;同义词可以创建在不同一个数据库服务器上,通过网络实现连接。

    1. Synonym

    CREATE [PUBLIC] SYNONYM synonym FOR object;

    同义词拥有如下好处:节省大量的数据库空间,对不同用户的操作同一张表没有多少差别;扩展的数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;同义词可以创建在不同一个数据库服务器上,通过网络实现连接。

    想起以前做数据库迁移的一种情况。应用程序针对数据库synonym编程。这样即使数据库物理迁移(服务器从英国搬到纽约)也不会有影响。


    2. view,存储过程,web service能屏蔽用户访问底层表或者服务的细粒度的权限。这样可以在上层做大粒度的权限控制

    展开全文
  • 他的主要研究方向是工程设计、生物(特别是人类基因组)数据库、文档及文本数据库等新兴应用中的数据库建模。设计和集成,此外,他对知识表示、数据挖掘和知识发现等也非常感兴趣。 目录 封面 -15 封底 -14 扉页 -13 ...
  • 他的主要研究方向是工程设计、生物(特别是人类基因组)数据库、文档及文本数据库等新兴应用中的数据库建模。设计和集成,此外,他对知识表示、数据挖掘和知识发现等也非常感兴趣。 目录 封面 -17 封底 -16 扉页 -15 ...
  • 它扩展了数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;数据库中提供了同义词管理的功能。同义词是数据库对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。在使用同义词时,数据库将它...

    达梦数据库创建公共同义词和私有同义词

    写这篇文章是我实际工作中遇到用户提问,DM可不可以像ORACLE一样不带模式名直接查询表数据。用户的问题中有两个关键点分别为:1、为DM支不支持类似ORACLE的同义词功能,包括公共同义词和私有同义词;2、DM创建同义词和利用同义词做查询等操作时的方法;通过查找资料和实践,DM支持同义词并且创建方法和使用方法与ORACLE一样;
    网上搜索DM同义词并没有查到详细的同义词创建方法步骤的博文,所以我开文分享下从创建用户赋权到创建同义词的所有操作。方便志同道合的朋友交流学习。

    一、同义词概念

    1、同义词(synonyms)从字面上理解就是别名的意思,和视图的功能类似,就是一种映射关系。它可以节省大量的数据库空间,对不同用户的操作同一张表没有多少差别;它扩展了数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;数据库中提供了同义词管理的功能。同义词是数据库对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。在使用同义词时,数据库将它翻译成对应方案对象的名字。与视图类似,同义词并不占用实际存储空间,只有在数据字典中保存了同义词的定义。

    2、同义词分类
    同义词有两种类型,分别是公用同义词与私有同义词。普通用户创建的同义词一般都是私有同义词,公有同义词一般由DBA创建,普通用户如果希望创建同义词,则需要CREATE PUBLIC SYNONYM这个系统权限。
    1)公用同义词:由一个特殊的用户组Public所拥有。顾名思义数据库中所有的用户都可以使用公用同义词。公用同义词往往用来标一些比较普通的数据库对象,这些对象往往大家都需要引用。
    2)私有同义词:它是跟公用同义词所对应,他是由创建他的用户所有。当然,这个同义词的创建者,可以通过授权控制其他用户是否有权使用属于自己的私有同义词。

    3、同义词作用
    1)多用户协同开发中,可以屏蔽对象的名字及其持有者。如果没有同义词,当操作其他用户的表时,必须通过user名.表名的形式,采用了同义词之后就可以隐蔽掉user名,当然这里要注意的是:public同义词只是为数据库对象定义了一个公共的别名,其他用户能否通过这个别名访问这个数据库对象,还要看是否已经为这个用户授权。

    2)为用户简化sql语句。上面的一条其实就是一种简化sql的体现,同时如果自己建的表的名字很长,可以为这个表创建一个同义词来简化sql开发。

    3)同义词在数据库链接中是一个命名的对象,说明一个数据库到另一个数据库的路径,通过其可以实现不同数据库之间的通信。Createdatabase link 数据库链名 connect to user名 identified by 口令 using ‘连接串’; 访问对象要通过 object名@数据库链名。同义词在数据库链中的作用就是提供位置透明性。

    5)与同义词相关的权限有CREATE SYNONYM、CREATE ANY SYNONYM、CREATE PUBLIC SYNONYM权限。

    二、DM数据库中创建同义词

    1、创建测试用户:

    创建测试用户:DM

    在这里插入图片描述

    给予用户角色:PUBLIC

    在这里插入图片描述

    给予用户权限:
    在这里插入图片描述

    语句创建:

    1、创建用户:

    create user "DM " identified by “111111111”

    limit failed_login_attemps 3, password_lock_time 1, password_grace_time 10;

    2、给予创建同义词权限,如果需要在其它模式下创建同义词,则必须具有CREATE ANY SYNONYM的权限。:

    grant CREATE SYNONYM,CREATE PUBLIC SYNONYM to "DM ";

    2、创建同义词

    测试用户登录:

    1、 创建私有同义词:
    语句:CREATE SYNONYM “DM”.“tset” FOR “DM”.“DM_test”;
    在这里插入图片描述

    2、 创建公共同义词:

    选中公共同义词右键选择创建公共同义词
    语句:CREATE PUBLIC SYNONYM “DM_TEST” FOR “DM”.“DM_test”;
    在这里插入图片描述

    3、 创建同义词后即可实现隐蔽掉模式名:
    在这里插入图片描述

    三、同义词语法:

    普通用法如下所示:

    CREATE [OR REPLACE] [PUBLIC] SYNONYM [ schema.] 同义词名称 FOR [ schema.] object [ @dblink];

    –专有(私有)同义词

    CREATE SYNONYM SYSN_TEST FOR TEST;

    –公共同义词

    CREATE PUBLIC SYNONYM PUBLIC_TEST FOR TEST;

    注:

    1、同义词是和用户的schema无关的,但是公共的意思并不是所有的用户都可以访问它,必须被授权后才能进行;

    展开全文
  • 它可以节省大量的数据库空间,对不同用户的操作一张表没有多少差别;它扩展了数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;Oracle数据库中提供了同义词管理的功能。同义词是数据库对象的一个别名,...

    1.1数据库创建同义词(synonym)

    Oracle的同义词(synonyms)从字面上理解就是别名的意思,和视图的功能类似,就是一种映射关系。它可以节省大量的数据库空间,对不同用户的操作同一张表没有多少差别;它扩展了数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;Oracle数据库中提供了同义词管理的功能。同义词是数据库对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。在使用同义词时,Oracle数据库将它翻译成对应方案对象的名字。与视图类似,同义词并不占用实际存储空间,只有在数据字典中保存了同义词的定义。在Oracle数据库中的大部分数据库对象,如表、视图、物化视图、序列、函数、存储过程、包、同义词等等,数据库管理员都可以根据实际情况为他们定义同义词。创建同义词,访问不同用户下的表,不用加用户名。(意思就是取了一个公用的别名)

    1.1.1在同一数据库下创建同义词(synonym)

    第一步:创建新用户,以及访问不同用户下的表,必须授予以下权限

    (1)   create user test_1/test_2 identified by 123;

    (2)   grant resource,connect to test_1;

    (3)   grant select any table to test_1;

    第二步:授予创建同义词(synonym)的权限

    grant create any synonym to test_1;

    第三步:创建同义词,并进行访问

    (1)create synonym teacher for test_2.teacher;

    (2)select * from teacher;(在用户test_1中进行查询)

    1.1.2在不同数据库下创建同义词(synonym)

    第一步:建立DBLink

    create public database link test_others_course

    connect to test_others identified by "456"

    using'(DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.106)(PORT = 1521))

    (CONNECT_DATA =

    (SERVER = DEDICATED)

    (SERVICE_NAME = ORCL)

    )

    )';

    第二步:建立同义词

    create synonym course for course@test_others_course;

    第三步:进行操作(在用户test_1中进行操作)

    select * from course;

    update course set cname='计算机导论' where tno='825';

    展开全文
  •  (1)完善地管理各种数据库对象,具有强大数据组织、用户管理、安全检查等功能。  (2)强大数据处理功能,在一个工作组级别网络环境中,使用Access开发用户数据库管理系统具有传统XBASE(DBASE、FoxBASE...
  • 6.2.4 数据库对象的存储分配 175 6.2.5 增加表空间大小 176 6.2.6 删除表空间 177 6.2.7 用户表空间数目 178 6.2.8 表空间限额 178 6.2.9 主动表空间空间预警 178 6.2.10 管理重做数据生成 ...
  • 1.按同一顺序访问对象,如果所有并发执行事务都按照一个顺序访问对象,发生死锁可能性就会降低 2. 不要在事务中出现和用户交互,如果用户长时间不响应,则事务只要挂起 3.尽量使事务短小简练,一个长事务...
  • 如何减少数据库应用死锁

    千次阅读 2007-12-20 18:05:00
    1.按同一顺序访问对象,如果所有并发执行事务都按照一个顺序访问对象,发生死锁可能性就会降低2. 不要在事务中出现和用户交互,如果用户长时间不响应,则事务只要挂起3.尽量使事务短小简练,一个长事务执行...
  • 10.3.1 Oracle的数据库级闪回 507 10.3.2 Oracle的flashback drop功能 511 10.3.3 Oracle 10g的Flashback Version Query 517 10.3.4 通过Flashback Transaction Query进行事务撤销 519 10.3.5 闪回表 520 ...
  • 基于objectARXAuotocad二次开发完整教程(9个章节武汉大学测绘学院教学版),主要内容包括:用户交互,autocad数据库,实体对象,扩充数据,几何类,用户界面,自定义对象,反应器等。这是武汉大学测绘学院...
  • ios中NSUserDefaults用法

    千次阅读 2014-07-15 09:12:30
    你可以在程序运行的时候从用户默认的数据库中读取程序的设置。同时NSUserDefaults的缓存避免了在每次读取数据时候都打开用户默认数据库的操作。可以通过调用synchronize方法来使内存中的缓存与用户默认系统进行同步...
  • 09年6月14日,IBM全球同步发布了一款具有划时代意义的数据库产品——DB2 9.5,而这款新品最大特点即是率先实现了可扩展标记语言(XML)和关系数据间的无缝交互,而无需考虑数据的格式、平台或位置。  ACCP6.0课程...
  • 它可以节省大量的数据库空间,对不同用户的操作一张表没有多少差别;它扩展了数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;Oracle数据库中提供了同义词管理的功能。同义词是数据库对象的一个别名,...
  • 它扩展了数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;Oracle数据库中提供了同义词管理的功能。同义词是数据库对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。...
  • Oracle 同义词概念: ...它扩展了数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;Oracle数据库中提供了同义词管理的功能。  同义词是数据库对象的一个别名,经常用于简化对象访问和提高对象...
  • 它可以节省大量的数据库空间,对不同用户的操作一张表没有多少差别;它扩展了数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;Oracle数据库中提供了同义词管理的功能。同义词是数据库对象的一个别名,...
  • ORACLE同义词总结

    2017-05-10 08:04:24
    它可以节省大量的数据库空间,对不同用户的操作一张表没有多少差别;它扩展了数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;Oracle数据库中提供了同义词管理的功能。同义词是数据库对象的一个别名,...
  • 同意词(SYNONYM)

    2017-12-15 10:45:25
    它可以节省大量的数据库空间,对不同用户的操作一张表没有多少差别;它扩展了数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;Oracle数据库中提供了同义词管理的功能。同义词是数据库对象的一个别名,...
  • 同义词

    2017-09-18 18:52:31
    它扩展了数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;Oracle数据库中提供了同义词管理的功能。同义词是数据库对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。在使用同义词时,O
  • 它扩展了数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;Oracle数据库中提供了同义词管理的功能。同义词是数据库对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。在使用同义
  • 同义词简解

    2017-06-22 15:30:17
    它扩展了数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;Oracle数据库中提供了同义词管理的功能。同义词是数据库对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。在使用同义词时,Oracl
  • Oracle SYNONYMS

    2019-05-05 00:03:38
    --它可以节省大量的数据库空间,对不同用户的操作一张表没有多少差别;它扩展了数据库的使用范围, --能够在不同的数据库用户之间实现无缝交互;Oracle数据库中提供了同义词管理的功能。 --同义词是数据库对象的一个...
  • ORACLE同义词汇总

    2017-03-28 11:48:15
    它扩展了数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;Oracle数据库中提供了同义词管理的功能。同义词是数据库对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。在使用同义词时,Oracl

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 201
精华内容 80
关键字:

同用户交互的数据库对象