`
超级板凳
  • 浏览: 94597 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Hibernate如何获取指定主键id的某对象

阅读更多
看到 总结得挺好 转一下
在Hibernate中,有两种方法可以通过主键Id来获得数据对象,分别是get()和load()方法。下面我们来分别进行讨论:
1 get()
Java代码
public Object get(Class entityClass,Serializable id) 

public Object get(Class entityClass,Serializable id)

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

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

相关推荐

    hibernate 无主键表映射

    在Hibernate中,对无主键表的操作与普通实体基本相同,只是在保存和查询时需要传入整个复合主键对象。例如,创建一个新的订单: ```java OrderKey key = new OrderKey(); key.setCustomerId("123"); key.setOrderId...

    Hibernate Annotation 共享主键一对一双向关联

    `@OneToOne`用于声明一对一的关联,而`@PrimaryKeyJoinColumn`则指定主键同时也是外键的列。 例如,假设我们有两个实体类,一个是`Person`,一个是`Profile`,它们之间存在一对一的关联,并且共享同一个主键: ```...

    hibernate使用主键关联的一对一关系

    @PrimaryKeyJoinColumn // 指定主键关联 private EntityA entityA; } ``` ### 关联属性详解 - `cascade`: 这个属性定义了操作(如保存、更新、删除)是否应级联到关联的实体。例如,`cascade="all"`表示所有操作...

    Hibernate联合主键的例子

    - 联合主键的类必须实现`Serializable`接口,因为Hibernate在处理对象时需要序列化。 - 在使用联合主键时,通常不需要生成自增的ID,因为主键是通过组合多个字段生成的。 - 联合主键的每个字段通常都会设置为`@...

    hibernate的联合主键怎么设置

    在映射文件中,`<composite-id>` 标签用于声明联合主键,`<key-property>` 标签则指定了每个主键属性及其对应的数据库列。 4. **使用 Hibernate API**: 有了以上配置,你就可以在程序中通过 Hibernate API 来...

    Hibernate中主键生成策略

    当一个新对象被保存时,数据库会自动为该对象分配一个唯一的ID。在Hibernate中,通过`@GeneratedValue(strategy = GenerationType.IDENTITY)`来指定。 2. **Sequence策略**: 适用于支持序列的数据库,如Oracle。...

    Hibernate注解映射联合主键

    同时,需要在主类上添加`@IdClass`注解,指定联合主键的类。这种方式要求主类包含联合主键类中的所有字段,且每个字段都需要对应联合主键类中的相应字段。联合主键类同样需要实现`Serializable`接口并重写`equals()`...

    hibernate主键生成策略详解

    在内部,Hibernate 会调用 `org.hibernate.id.IncrementGenerator` 类中的 `generate()` 方法来获取当前主键的最大值,通常是通过执行 `SELECT MAX(idColumnName) FROM tableName` 这样的 SQL 语句来完成的。...

    hibernate映射主键生成策略native

    在ORM(对象关系映射)技术中,Hibernate作为一款流行的Java持久层框架,在处理数据持久化方面提供了丰富的功能和灵活性。其中,主键生成策略是Hibernate配置中的一个重要部分,它决定了表中的主键值如何生成。本文...

    hibernate复合主键的实例

    在Java的持久化框架Hibernate中,复合主键(Composite Key)是一种特殊的数据结构,用于处理具有多个字段作为唯一标识的情况。本实例将深入探讨如何在Hibernate中实现复合主键,并提供一个具体的示例来帮助理解。 ...

    Hibernate主键策略-sequence

    Hibernate通过`org.hibernate.id.SequenceGenerator`类来实现序列主键生成器。在`nextValue()`方法中,它会与数据库进行交互,获取序列的下一个值。这个过程涉及到JDBC操作,包括SQL的执行和结果的处理。 3. **...

    hibernate中基于主键的one2one

    在Java实体类中,你需要为一对一关联的字段添加`@OneToOne`注解,并且可以使用`@PrimaryKeyJoinColumn`来指定主键关联。例如: ```java @Entity public class EntityA { @Id @GeneratedValue(strategy = ...

    Hibernate用UUID作为主键的Demo

    在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者使用面向对象的方式操作数据库。本教程将深入探讨如何在Hibernate中使用UUID(通用唯一识别码)作为实体类的主键。UUID是一种能确保...

    hibernate一对一主键关联映射(单项关联)

    3. **使用关联**:在应用程序中,你可以通过`Person`对象获取其对应的`IdCard`,反之亦然(尽管在本例中是单项关联,`IdCard`没有反向引用)。 ```java // 创建并保存Person Person person = new Person(); //... ...

    Hibernate一对一主键关联映射(双向关联)

    在这个例子中,`User`和`Profile`实体通过`id`字段进行主键关联,`mappedBy`属性用于指定关联的反向属性。`cascade`属性定义了级联操作,如保存和删除。 双向一对一关联的好处在于简化了代码,提高了可读性和可维护...

    Hibernate复合主键.

    `@IdClass`注解用于指定一个单独的类作为复合主键的载体。这个类通常包含与复合主键相关的属性,并且需要实现`java.io.Serializable`接口。以下是一个简单的示例: ```java public class CompositeKey implements ...

    hibernate 主键一对一映射(单向) 实例(java类)

    本实例将深入探讨如何在Hibernate中实现主键级别的单向一对一映射。 首先,我们理解一对一映射的基本概念。在数据库设计中,一对一映射通常发生在两个表的主键之间,其中一个表的主键是另一个表的外键。在Hibernate...

    hibernate 主键生成策略

    - **描述**:通过调用数据库的 Sequence 对象来生成主键,需要显式指定 Sequence 名称。 - **应用场景**:在 Oracle 数据库中常见,因为 Oracle 不支持自增字段,而 Sequence 是一种高效的解决方案。 #### 5. ...

    hibernate复合主键映射

    在使用Hibernate操作这类复合主键的实体时,我们需要创建一个复合主键实例,并将其设置给实体对象。例如: ```java OrderKey orderKey = new OrderKey(); orderKey.setCustomerId("123"); orderKey.setOrderId("456...

Global site tag (gtag.js) - Google Analytics