Hibernate区分不同对象的方法

1.关系数据库按主键区分不同记录。

创新互联是一家专业提供长宁企业网站建设,专注与成都网站制作、网站建设、外贸网站建设H5场景定制、小程序制作等业务。10年已为长宁众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。

 
 
 
  1. create table CUSTOMERS (ID int promary key not null, NAME varchar(15));  
  2.  
  3. insert into CUSTOMERS values(1, 'Tom');  
  4.  
  5. insert into CUSTOMERS values(3, 'Tom');  

2.Java语言按内存地址区别不同的对象。

 
 
 
  1. Customer c1 = new Customer("Tom");  
  2.  
  3. Customer c2 = new Customer("Tome");  
  4.  
  5. Customer c3 = c1;  
  6.  
  7. // c1 == c3 结果为true 
  8.  
  9. // c1 == c2 结果为false 

3.Hibernate用对象标识符(OID)来区分不同对象。

 
 
 
  1. Customer c1 = (Customer)session.load(Customer.classnew Long(1));  
  2.  
  3. Customer c2 = (Customer)session.load(Customer.classnew Long(1));  
  4.  
  5. Customer c3 = (Customer)session.load(Customer.classnew Long(3));  
  6.  
  7. // c1 == c2 结果为true  
  8.  
  9. // c1 == c3 结果为false  

以上程序中,三次调用了Session的load()方法,分别加载OID为1或3的Customer对象。以下是Hibernate三次加载Customer对象的流程。

(1)第一次加载OID为1的Customer对象时,先从数据库的CUSTOMERS表中查询ID为1的记录,再创建相应的Customer实例,把它保存在Session缓存中,最后把这个对象的引用赋值给变量c1。

(2)第二次加载OID为1的Customer对象时,直接把缓存中OID为1的Customer对象的引用赋值给c2,因为c1和c2引用同一个Customer对象。

(3)当加载OID为3的Customer对象时,由于在缓存中不存在这样的对象,所以必须再次到数据库中查询OID为3的记录,再创建相应的Customer实例,把它保存存在Session缓存中,最后把这个对象的引用赋值给变量c3。

分享标题:Hibernate区分不同对象的方法
当前URL:http://www.shufengxianlan.com/qtweb/news1/178051.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联