用户登录
用户注册

分享至

hibernate根据id获取对象

  • 作者: -楠er
  • 来源: 51数据库
  • 2020-12-09

public class TestVOPOJO //pojo 和数据库表映射的那个

{

TestVO tvo;

public TestVO getTvo() {

return tvo;

}


public void setTvo(TestVO tvo) {

this.tvo = tvo;

}

}


这样无主键表才终于映射到了Hibernate

3

头像

匿名用户1级

2016-03-16 回答

这个方法就是一般的利用get方法,在这里我们要说明的是,通过get()方法,首先在一级缓存中利用该Id来查找该对象,如果没有再再二级缓存中查找该对象(前提是开启了二级缓存),如果没有再从数据库中查找该对象。这里可以看出,通过get方法,并不是立即就执行SQL语句的,如果在缓存中找到了该对象,就直接可以返回了,不用执行SQL语句了。这里还要注意的是,通过get方法时,如果对象存在,则立即返回该对象,而不管该类的配置文件中的lazy属性。同时,如果对象不存在则返回null. 


2 load() 

load()方法也可以通过Id来获得对象。不同的是,在立即加载中,如果对象不存在,则会抛出异常,而get()方法则返回null.而对于延迟加载,get()方法直接返回获得的对象,而load()返回对象的代理,在关闭事务后,该代理中只用一个属性那就是id,当只有这个对象被访问的时候,该对象的的其它属性才被初始化。但是在没有关闭事务的条件下,各个属性都被初始化了。

3

头像

大大怪1级

2016-03-16 回答

/**  

     * 获取主键名称  

     * @return  

     */  

    public string getpkname() {  

        field[] fields = this.entityclass.getdeclaredfield();  

        for (field field : fields) {  

            field.isannotationpresent(id.class);  

            this.pkname=field.getname();  

            break;  

        }  

        return pkname;  

    }


软件
前端设计
程序设计
Java相关