首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Hibernate是直接读取域对象实例字段还是在保存时使用getter方法?

Hibernate在保存对象时使用getter方法。

Hibernate是一个开源的对象关系映射(ORM)框架,它提供了将Java对象映射到关系数据库中的功能。在Hibernate中,对象的持久化是通过Session对象来完成的。

当使用Hibernate保存对象时,它会通过调用对象的getter方法来获取对象的属性值,然后将这些属性值保存到数据库中。这是因为Hibernate遵循JavaBean规范,通过getter和setter方法来访问对象的属性。

通过使用getter方法,Hibernate可以确保对象的属性值是最新的,因为getter方法可以在返回属性值之前执行任何必要的逻辑。此外,使用getter方法还可以保护对象的封装性,隐藏属性的实现细节。

总结起来,Hibernate在保存对象时使用getter方法来获取对象的属性值,并将其保存到数据库中。这种方式可以确保属性值的准确性和封装性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

HIBERNATE 持久化基础

无论是从设计草案还是从一个遗留数据库开始,开发人员都可以采用Hibernate。...将内存数据以文件形式保存在永久介质 (磁盘等)中,持久化可以通过将程序数据直接保存成文本文件或者XML格式等手段实现,但平时我们所说的持久化一般是指基于关系型数据库的持久化。...狭义上的对象持久化是指将域对象永久保存至数据库中,而广义上的对象持久化则包括与数据库相关的各种操作。 (1)保存:将域对象永久保存至数据库中。 (2)更新:更新数据库中域对象的状态。...(1) 解析并读取Hibernate.cfg.xml Configuration对象用于读取配置文件并创建 SessionFactory对象,Configuration 的构造方法是将默认路径下的 hibernate.cfg.xml...在设计软件架构时,应避免多个线程共享同一 Session实例。 Ø 轻量级。即创建与销毁无须消耗过多的资源,可以经常在程序中创建或销毁 Session对象。

11010

接近8000字的SpringSpringBoot常用注解总结!安排!

@Scope 声明 Spring Bean 的作用域,使用方法: @Bean @Scope("singleton") public Person personSingleton() { return...new Person(); } 四种常见的 Spring Bean 的作用域: singleton : 唯一 bean 实例,Spring 中的 bean 默认都是单例的。...参数校验 数据的校验的重要性就不用说了,即使在前端对数据进行校验的情况下,我们还是要对传入后端的数据再进行一遍校验,避免用户绕过浏览器直接通过一些 HTTP 工具直接向后端请求一些违法数据。...Hibernate Validator 是 Hibernate 团队最初的数据校验框架,Hibernate Validator 4.x 是 Bean Validation 1.0(JSR 303)的参考实现...指定不持久化特定字段 @Transient :声明不需要与数据库映射的字段,在保存的时候不需要保存进数据库 。

2.1K21
  • SpringBoot+Spring常用注解总结

    扁平化对象 11. 测试相关 1. @SpringBootApplication 这个注解是 Spring Boot 项目的基石,创建 SpringBoot 项目之后会默认在主类加上。...@Scope 声明 Spring Bean 的作用域,使用方法: @Bean @Scope("singleton") public Person personSingleton() { return...new Person(); } 四种常见的 Spring Bean 的作用域: singleton : 唯一 bean 实例,Spring 中的 bean 默认都是单例的。...参数校验 数据的校验的重要性就不用说了,即使在前端对数据进行校验的情况下,我们还是要对传入后端的数据再进行一遍校验,避免用户绕过浏览器直接通过一些 HTTP 工具直接向后端请求一些违法数据。...相关注解: @ControllerAdvice :注解定义全局异常处理类 @ExceptionHandler :注解声明异常处理方法 如何使用呢?拿我们在第 5 节参数校验这块来举例子。

    94520

    安排上了!一文掌握 Spring Boot 常用注解

    ,不会使用那么杂乱无章的写法而且维护也麻烦,通过就是一次性读取到一个 Java 配置类,然后需要使用的地方直接引用这个类就可以多次访问了,方便维护。...所有的注解,推荐使用 JSR 注解,即 javax.validation.constraints,而不是 org.hibernate.validator.constraints Bean字段验证注解...JPA数据持久化 上面是百度百科给的概念,只能说在实际项目开发中还是用的不多,大家还是喜欢用 Mybatis,不过相比更加简洁的技术还是要学习下的。...,可以让事物在遇到非运行时异常时也回滚。...扁平化对象 @JsonUnwrapped 这个可能不太好说,大家直接看代码就懂了: @Getter @Setter @ToString public class Account { @JsonUnwrapped

    1.6K51

    JAVA编程学习经验实践积累总结分享

    *懒汉是不是在类加载时初始化类的实例化对象,不能保证对象的唯一性,所以在多线程的情况下尽管有 实例对象空值的判断,也会产生线程安全的问题,因为多线程是按照时间片来运行线程的,破坏类代码 的垂直执行的顺序...实例化和初始化的区别:*1. 实例化是为对象在堆中新分配一个内存空间,在栈中存入新建对象在堆内存中的地址。*2....如: 建表字段类型:timestamp default CURRENT_TIMESTAMP;这样保存实体字段数据时就可以省略该字段的设置值。 31....Java中栈是存放基本数据类型值的,比如对象的地址,整形,堆是存放大对象的,比如字符串String等。在栈中 读取数据比堆中读取数的效率要高。 12. 形参和实参的区别就是是否有给参数赋值。...替换文本域,我还是不太理解,是不是用编辑器的文本域替换/html文档字段里的内容字段??oFCKeditor.ReplaceTextarea(); ); 3.

    78030

    实战:应用对持久数据访问| 从开发角度看应用架构9

    大魏这个类,在被生成对象时,会从数据库表中读数据,然后可能会对数据修改,修改的这些数据,会存到持久性上下文中(运行在内存中),在默写情况下,会被存回数据库表中(例如提交)。...另外,应该通过使用getter和setter方法来访问每个实例变量。 最后,类必须至少有一个没有参数的构造函数,尽管类仍然可以有其他构造函数接受参数。...getter方法的返回类型必须与传递给setter方法的参数的类型相同。 getter和setter方法必须是public或protected,并且必须遵循Java bean的命名约定。...3jta-data-source是数据源的名称。每个持久性单元都必须有一个数据库连接。 JPA提供程序在启动时使用JNDI查找服务按名称查找数据源。...4可以在属性元素中设置其他标准或特定于供应商的属性。 hibernate.Dialect属性指定使用哪个数据库。具有更新值的hibernate.hbm2ddl.auto属性会自动更新模式。

    1.6K30

    Hibernate框架学习之注解映射实体类

    这两种情况下,数据表中的season字段一种保存的是枚举类型的具体值,一种保存的是枚举值对应的序号。...@OrderColumn注解用于配置有序集合的序号,由于list是有序的集合,通过该注解将会在address表中增加一个字段保存各个元素在集合中的序号。...而对于有序集合来说,还应该包含一个字段用于保存每个集合元素在集合中的序号,该序号字段和第一个外键依赖字段组合成新表的联合主键,唯一标识一条记录。...在hibernate的管理下,当有数据添加进userinfo表的时候,hibernate将拿到该实体类实例的集合属性的值,并连带该实例的id一起插入到新表中。...,setter方法 } 显然,在实体类中的集合类型属性的映射,大体上是一样的。

    3.2K90

    应用对持久数据的管理 | 从开发角度看应用架构7

    二、对象关系映射 当应用程序将数据存储在永久性存储中(例如flat file,XML文件或数据库的持久性数据)时,它被称为数据的持久性。...关系数据库是企业应用程序用来保存数据以供重用的最常见的数据存储之一。 Java EE企业应用程序中的业务数据被定义为Java对象。 这些对象保存在相应的数据库表中。...:访问数据表的实例。 三、实体 一个entity是一个可持久化的、轻量级的域对象。 entity class映射到关系数据库中的表。 entity class的每个实例都有一个主键字段。...在Java中,entity是一个简单的旧Java对象(POJO)类,它使用@Entity注释进行了注释。 entity类中的所有字段默认存储在数据库中,并称为持久字段。...EE托管对象(如EJB)中获得EntityManager实例的另一种方法是生产者技术。

    2.7K40

    2018-08-05 3W+字长文深度总结|程序员面试题精华版集合(内附思维导图)!Java Web学习路径Java编程所需的工具及知识JVM的基本结构SSH框架设计模式之间的关系

    现在有许多ORM工具,它们底层调用jdbc来实现了ORM工作,我们直接使用这些工具,就省去了直接使用jdbc的繁琐细节,提高了开发效率,现在用的较多的ORM工具是hibernate。...Spring主要核心是: (1).控制反转(IOC):以前传统的java开发模式中,当需要一个对象时我们,我们会自己使用new或者getInstance等直接或者间接调用构造方法创建一个对象,而在Spring...实例化一个java对象有三种方式:使用类构造器,使用静态工厂方法,使用实例工厂方法,当使用spring时我们就不需要关心通过何种方式实例化一个对象,spring通过控制反转机制自动为我们实例化一个对象。...(2).依赖注入(DI):Spring使用java Bean对象的Set方法或者带参数的构造方法为我们在创建所需对象时将其属性自动设置所需要的值的过程就是依赖注入的基本思想。...最常见的方式就是通过主键或者时间等字段进行Hash和取模后拆分。水平分表,能够降低单表的数据量,一定程度上可以缓解查询性能瓶颈。但本质上这些表还保存在同一个库中,所以库级别还是会有IO瓶颈。

    60210

    Spring与Hibernate整合

    entity) 保存新的示例 3 update(Object entity) 根据给定的持久化对象更新记录 4 delete(Object entity) 删除指定持久化实例 5 deleteAll(...在Hibernate风行之前,JDBC是数据持久化的主要手段,为了达到在业务逻辑层进行事务控制,一个通用的做法是将Connection对象以参数的形式传来传去。...Spring整合Hibernate后,以下关于findByCriteria方法的说法中,正确的是()。 A. 参数是HQL B. 参数是Restrictions对象 C....参数是DetachedCriteria对象 D. 该方法不支持分页 4. 以下关于 Spring与Hibernate集成的说法中,错误的是()。 A....通过Spring,在Biz层代码中无须直接实例化DAO类,而是通过注入获得 C. 通过Spring,在DAO类中无须实例化SessionFactory,而是通过注入获得 D.

    7710

    Spring框架学习之高级依赖关系配置(一)

    是Spring内置的一个特殊的bean,它可以获取指定实例的指定getter方法的返回值。...id,通过注入propertyPath属性值,告诉它目标对象的具体getter方法的名称。...于是我们在后续的bean配置中就可以直接使用该bean所包含的值了。 2、获取静态字段值 对于提供了getter方法的属性,我们可以使用上述方法通过getter方法获取到该属性的值。...对于并为提供getter方法的属性值,我们也可以直接获取,但前提是该属性访问权限足够(private肯定是不能够获取得到的)。...本小节学习的是获取静态的字段,对于非静态字段,Spring也提供了方法获取,但是一般的程序对于非静态字段都会使用private修饰,提供良好的封装性,因此我们也不能获取得到,所以对于非静态字段的获取意义不大

    53090

    Java程序员面试题集(86-115)

    答:主要有以下三项区别: ① 如果没有找到符合条件的记录, get方法返回null,load方法抛出异常 ②get方法直接返回实体类对象, load方法返回实体类对象的代理 ③ 在Hibernate 3...之前,get方法只在一级缓存(内部缓存)中进行数据查找, 如果没有找到对应的数据则越过二级缓存, 直接发出SQL语句完成数据读取; load方法则可以充分利用二级缓存中的现有数据;当然从Hibernate...最常见的乐观锁是通过数据版本标识来实现的,读取数据时获得数据的版本号,更新数据时将此版本号加1,然后和数据库表对应记录的当前版本号进行比较,如果提交的数据版本号大于数据库中此记录的当前版本号则更新数据,...答:延迟加载就是并不是在读取的时候就把数据加载进来,而是等到使用时再加载。Hibernate使用了虚拟代理机制实现延迟加载。返回给用户的并不是实体本身,而是实体对象的代理。...代理对象在用户调用getter方法时就会去数据库加载数据。但加载数据就需要数据库连接。而当我们把会话关闭时,数据库连接就同时关闭了。

    1.8K70

    Hibernate面试题大全

    这里写图片描述 持久化状态 当保存在数据库中的对象就是持久化状态了 当调用session的save/saveOrUpdate/get/load/list等方法的时候,对象就是持久化状态 在数据库有对应的数据...因此能提高检索性能,并且能节省内存空间; 缺点: 应用程序如果希望访问游离状态代理类实例,必须保证他在持久化状态时已经被初始化; 延迟加载:lazy=true; 迫切左外连接检索: 优点: 1对应用程序完全透明...,不管对象处于持久化状态,还是游离状态,应用程序都可以方便地冲一个对象导航到与它关联的对象。...select:返回的是一个resultset,要从ResultSet中一行一行、一个字段一个字段的取出,然后封装到一个对象中,不直接返回一个对象。...所以它会立即执行Sql insert 使用 save() 方法保存持久化对象时,该方法返回该持久化对象的标识属性值(即对应记录的主键值); 使用 persist() 方法来保存持久化对象时,该方法没有任何返回值

    2K50

    框架篇

    使用Hibernate框架,不用写JDBC代码,仅仅是调用一个save方法,就可以将对象保存到关系数据库中,仅仅是调用一个get方法,就可以从数据库中加载出一个对象。   ...6、在hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决?...1.缓存就是把以前从数据库中查询出来和使用过的对象保存在内存中(一个数据结构中),这个数据结构通常是或类似HashMap,当以后要使用某个对象时,先查询缓存中是否有这个对象,如果有则使用缓存中的对象,如果没有则去查询数据库...2.Hibernate的Session就是一种缓存,我们通常将之称为Hibernate的一级缓存,当想使用session从数据库中查询出一个对象时,Session也是先从自己内部查看是否存在这个对象,存在则直接返回...缺省的Spring bean 的作用域是Singleton. 16、解释Spring框架中bean的生命周期。   1.Spring容器 从XML 文件中读取bean的定义,并实例化bean。

    74520

    Hibernate框架学习之一

    例例如对几十、几百张包含几十个字段的表进行插入操作时,编写的SQL语句不但很长,而且繁琐,容易出错;在读取数据时,需要写多条 getXxx 语句从结果集中取出各个字段的信息,不但枯燥重复,并且工作量非常大...在 Hibernate 的启动过程中,Configuration 类的实例首先定位映射文档的位置,读取这些配置,然后创建一个 Sessionfactory 对象。...【加载核心配置文件】   在使用 Hibernate 时,首先要创建 Configuration 实例,Configuration 实例主要用于启动、加载、管理 hibernate 的配置文件信息。...) 方法获取 Session 实例时,SessionFactory 直接创建一个新的 Session实例,并且在使用完成后需要调用 close ( ) 方法进行手动关闭。...Session 是线程不安全的,多个并发线程同时操作一个 Session 实例时,就可能导致 Session 数据存取的混乱(方法内部定义和使用 Session 时,不会出现线程问题)。

    89480

    Hibernate框架学习之一

    例例如对几十、几百张包含几十个字段的表进行插入操作时,编写的SQL语句不但很长,而且繁琐,容易出错;在读取数据时,需要写多条 getXxx 语句从结果集中取出各个字段的信息,不但枯燥重复,并且工作量非常大...在 Hibernate 的启动过程中,Configuration 类的实例首先定位映射文档的位置,读取这些配置,然后创建一个 Sessionfactory 对象。...【加载核心配置文件】   在使用 Hibernate 时,首先要创建 Configuration 实例,Configuration 实例主要用于启动、加载、管理 hibernate 的配置文件信息。...) 方法获取 Session 实例时,SessionFactory 直接创建一个新的 Session实例,并且在使用完成后需要调用 close ( ) 方法进行手动关闭。...Session 是线程不安全的,多个并发线程同时操作一个 Session 实例时,就可能导致 Session 数据存取的混乱(方法内部定义和使用 Session 时,不会出现线程问题)。

    1.2K70

    Java面试宝典4.0版

    Java 中 static 方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而 static 方法是编 译时静态绑定的。 static 方法跟类的任何实例都不相关,所以概念上不适用。...如果 在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding) 。子 类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。...创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件 ( 一般作为 WHERE 子句的条 件 ) 。 实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。...是 JSP 中的最重要的一个内置对象,可以通过 pageContext 获 取其他域对象的应用,同时它是一个域对象,作用范围只针对当前页面,当前 页面结束时, pageContext 销毁, 生命周期是...getter 方法与 request 打交道的; struts2 中,一个 Action 对象对应一个 request 上下文。

    1.1K40

    Java理论知识及面试题

    6、说说spring的作用域   singleton:在每个Spring IoC容器中一个bean定义对应一个对象实例。   ...优点:java的反射机制就是增加程序的灵活性、   缺点:缺点:     (1)性能问题:使用反射基本上是一种解释操作,用于字段和方法接入时要远慢于直接代码。...实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。 3、是否可以从一个 static 方法内部发出对非 static 方法的调用?   ...优点:java的反射机制就是增加程序的灵活性、   缺点:缺点:(    (1)性能问题:使用反射基本上是一种解释操作,用于字段和方法接入时要远慢于直接代码。...哪种依赖注入方式你建议使用,构造器注入,还是 Setter方法注入? 你两种依赖方式都可以使用,构造器注入和Setter方法注入。

    55020

    Java中使用Hibernate系列之映射文件学习(第一节)

    我们使用Hibernate时,它需要知道怎样去加载(load)和存储(store)持久化类的对象,这也正是Hibernate映射文件发挥作用的地方;这个需要映射文件告诉Hibernate,应该访问哪个数据库...(database)里面的哪个表(table)及应该使用表里面的哪些字段(column)。...已经知道怎样把Events类的对象持久化到数据库的EVENTS表里,以及怎样从EVENTS表加载到Events类的对象,每个实例对应着数据库表中的一行;这个重点说明主键(唯一的)属性如何映射到数据库表,...- Hibernate会使用getId()和setId()来访问它,column属性则告诉Hibernate我们使用EVENTS表的哪个字段作为主键;嵌套的generator元素指定了标识符生成策略,在这里我们指定...> 和id元素一样,property元素的name属性告诉Hibernate使用哪个getter和setter方法;在此例中,Hibernate会寻找getDate()/setDate(), 以及getTitle

    88960
    领券