hibernate的实体类entity(model)的编写规则

  • 我们在使用Hibernate时,书写了一个User类,这个类我们称为JavaBean
  • JavaBean可以简单的理解成提供私有属性,并提供私有属性的get/set方法
  • POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans
  • 我们也称为模型,在Hibernate中,又称这种类为实体因为是与表关联的

 

编写规则

  • 提供一个无参数 public访问控制符的构造器
  • 提供一个标识属性,映射数据表主键字段,提供id
  • 所有属性提供public访问控制符的 set  get 方法(javaBean)
  • 标识属性应尽量使用基本数据类型的包装类型
  • 不要用final修饰实体 (将无法生成代理对象进行优化)

使用包装类型的话则没有默认值,不赋值的话为空 那么数据库中存的信息就为null,如果是基本类型  比如Int默认就为0

 

持久化对象的唯一标识 OID

  1. Java按地址区分同一个类的不同对象.l
  2. 关系数据库用主键区分同一条记录l
  3. Hibernate使用OID来建立内存中的对象和数据库中记录的对应关系结论: 对象的OID和数据库的表的主键对应。
  4. 为保证OID的唯一性,应该让Hibernate来为OID赋值

 

区分自然主键和代理主键

  1. 主键需要具备: 不为空/不能重复/不能改变
  2. 自然主键: 在业务中,某个属性符合主键的三个要求.那么该属性可以作为主键列.【登录名可以是自然主键
  3. 代理主键: 在业务中,不存符合以上3个条件的属性,那么就增加一个没有意义的列.作为主键.  比如所有属性都不满足条件 那么我们创建一个属性ID来作为代理主键

 

基本数据与包装类型l

  1. 基本数据类型和包装类型对应hibernate的映射类型相同l
  2. 基本类型无法表达null、数字类型的默认值为0。
  3. 包装类默认值是null。当对于默认值有业务意义的时候需要使用包装类。

主键的生成策略【重要】

<id name="uid" column="id">
   
   <generator class="assigned">generator>
id>

 

   increment就是每次存储之前  Hibernate都去数据库中查一下最大的ID 然后再设置ID存进去 ,有并发问题

  将属性设置为UUID之后并且将属性设置为String之后 , 结果显示为为这样。 

 

手动设置ID属性 

 修改属性之后然后就要求我们每次手动存储ID  这段代码表示 我们生成一段代码并且去掉-

映射文件的配置



	
		
		
			
			
		
		
		
		
	

 

你可能感兴趣的:(hibernate的实体类entity(model)的编写规则)