1.  提供一个无参数的构造器:所有的持久化类都应该提供一个无参数的构造器,这个构造器可以不采用public访问控制符。只要提供了无参数的构造器,Hibernate就可以使用Constructor.newInstance()来创建持久化类的实例了。通常,为了方便Hibernate在运行时生成代理,构造器的访问控制修饰符至少是包课件的,及大于或等于默认的访问控制符。

  2. 提供一个标识属性:标识属性通常映射数据库表的主机字段。这个属性可以叫任何明智,其类型可以是任何的基本类型、基本类型的包装类型、java.lang.String 或者java.util.Date。如果使用了数据库表的联合主键,甚至可以用一个用户自定义的类,该类用用这些类型的属性。当然也可以不指定任何标识属性,而是在持久化注解中直接将多个普通属性映射成一个联合主键,但通常不推荐这么做。

  3. 为持久化累de每个成员变量提供setter和getter方法:Hibernate默认采用属性方式来访问持久化累的成员变量。

  4. 使用非final的类: 在运行是生存代理是Hibernate的一个重要功能。如果持久化累没有实现任何接口,Hibernate使用Javassist生成代理,该代理对象是持久化类的子类的实例。如果使用了final类,则无法生成Javassist生成代理,将无法进行性能优化。还有一个可选的策略,就是让Hibernate持久化类实现一个所有方法都声明为public的接口,此时将使用JDK的动态代理。同时应该避免在非final类中声明public final的方法。如果非要使用一个有public final方法的类,则必须通过设置lazy="false"来明确地禁用代理。

  5. 重写equals()和hashCode()方法:如果需要把持久化类的实例放入set中(当需要进行关联映射时,推荐这么做),则应该为该持久化类重写equals()和hashCode()方法。实现equals()/hashCode()最显而易见的方法是比较两个对象标识属性的值。如果值相同,则两个对象对应于数据库的同一行,隐藏他们是相等的(如果都被添加到Set中,则Set中只有一个元素)。遗憾的是,对采用自动生成标识值的对象不能使用这种方法。Hibernate仅为那么持久化对象指定标识值,一个新创建的实例将不会有任何标识值。因此,如果一个实例没有被保存过,但它又确实在一个Set中,那么它将会给这个对象付一个标识值。如果equals()和hashCode()是基于标识值实现的,则其hashCode()返回值会发生改变,这将违反Set的规则。

  提示:

    虽然Hibernate允许使用8中基本类型作为标识属性的类型,但是这样做在很多地方都不太方便,因此还是建议使用基本类型的包装类型作为标识属性的类型。

啦啦啦

5 -- Hibernate的基本用法 --5 1 持久化类的要求的更多相关文章

  1. 5 -- Hibernate的基本用法 --5 2 持久化对象的状态

    1. 瞬态 : 对象有new操作符创建,且尚未与Hibernate Session关联的对象被认为处于瞬态.瞬态对象不会被持久化到数据库中,也不会被赋予持久化标识.如果程序中失去了瞬态对象的引用,瞬态 ...

  2. hibernate学习笔记(2)持久化类测试

    持久化类的创建: 创建一个共有的不带参数的构造方法: public void Students(){ } 创建一个带参数的构造方法: (快捷键创建) 生成get,set方法: *可以不用此方法创建持久 ...

  3. hibernate课程 初探一对多映射2-5 创建持久化类并配置映射文件

    学习点: 1 一对多映射,一方 Grade.hbm.xml的写法: <hibernate-mapping> <class name="com.ddwei.entity.Gr ...

  4. Hibernate学习——持久化类的学习

    A.概念 持久化:将内存中的对象持久化(存储)到数据库的过程.Hibernate就是持久化的框架. 持久化类:一个普通java对象与数据库的表建立了映射关系,那么这个类在Hiberna中被称为持久化类 ...

  5. 5 -- Hibernate的基本用法 --2 2 Hibernate的数据库操作

    在所有的ORM框架中有一个非常重要的媒介 : PO(持久化对象:Persistent Object).持久化对象的作用是完成持久化操作,简单地说,通过该对象可对数据执行增.删.改的操作 ------ ...

  6. 三大框架 之 Hibernate生成策略与缓存策略(主键生成策略、持久化、持久化类划分、一级缓存、事物管理)

    目录 Hibernate生成策略与缓存策略 主键生成策略 主键分类 主键的生成策略 持久化 什么是持久化 什么是持久化类 持久化类编写规则 持久化类的划分 三种状态区分 持久态对象特征 一级缓存 什么 ...

  7. 5 -- Hibernate的基本用法 -- 要点

    Hibernate的基本用法 ⊙ ORM的基本知识 ⊙ ORM和Hibernate的关系 ⊙ Hibernate的基本映射思想 ⊙ Hibernate入门知识 ⊙ 使用Eclipse开发Hiberna ...

  8. Hibernate持久化类属性映射

    Hibernate充当应用程序和数据库之间的中间件,实现二者之间的交互操作,他对JDBC进行了封装,以完全面向对象的方式来操作数据. 适用于有多个数据源的情况下,不必去考虑不同数据源的操作差异. Hi ...

  9. Hibernate的持久化类状态

    Hibernate的持久化类状态 持久化类:就是一个实体类 与 数据库表建立了映射. Hibernate为了方便管理持久化类,将持久化类分成了三种状态. 瞬时态 transient (临时态):持久化 ...

随机推荐

  1. Windows10系统重置网络设置

    使用Windows10系统户很可能会遇到网络异常,连接不上网的情况? 如此,简易方法可以尝试下.重置网络,教程如下: 1.//按下WIN+X(或右键点击开始按钮),然后选择“命令提示符(管理员)”; ...

  2. apache hbase 发布1.0.0版本

    今天apache发布了最新的hbase 1.0.0,下图是版本变迁历史: 详情参考: https://blogs.apache.org/hbase/entry/start_of_a_new_era

  3. eclipse和jdk的版本问题,比如printf()出错

    1.右键项目选中properties 2.Java Builder Path >>>Libraries>>>选中JRE Syste Library[jre7]然后r ...

  4. 使用 Docker 搭建 Tomcat 运行环境

    转自: http://m.oschina.net/blog/616526, 版权归原作者所有. 1 Docker与虚拟机     2 搭建过程 2.1 准备宿主系统 准备一个 CentOS 7操作系统 ...

  5. C#并行Parallel编程模型实战技巧手册

    一.课程介绍 本次分享课程属于<C#高级编程实战技能开发宝典课程系列>中的一部分,阿笨后续会计划将实际项目中的一些比较实用的关于C#高级编程的技巧分享出来给大家进行学习,不断的收集.整理和 ...

  6. 解决springboot druid 数据库批量更新错误问题

    原文:https://www.2cto.com/kf/201712/706399.html springboot druid 数据库多SQL错误multi-statement not allow Ca ...

  7. 【面试 redis】【第十二篇】redis的相关面试问题

    redis的相关面试问题 redis教程:http://www.redis.net.cn/tutorial/3501.html ==================================== ...

  8. VS2010链接TFS遇见错误:TF204017,没有访问工作区域,需要一个或者多个必须权限

    最近刚刚搭建好服务器,然后准备将VSS源代码迁移到TFS源代码管理服务器上面.在我本机先用的服务器帐号来上传初始化源代码数据库,然后我又用自己的帐号进行迁出代码的时候发生的异常. 造成上述错误,主要是 ...

  9. SpringBoot自定义线程池处理异步任务

    @Async异步调用 就不解释什么是异步调用了,Spring Boot中进行异步调用很简单 1.通过使用@Async注解就能简单的将原来的同步函数变为异步函数 package com.winner.s ...

  10. 17、python对内存的使用

    python对内存的使用 浅拷贝和深拷贝 所谓浅拷贝就是对引用的拷贝(只拷贝父对象) 所谓深拷贝就是对对象的资源的拷贝 解释一个例子: import copy a = [1,2,3,['a','b', ...