实体类映射

阅读: 评论:0

实体类映射

实体类映射

回到首页☞

XML配置文件是最基础的配置,而@注解是Java的官方JPA提供的。

1、实体类映射配置

1.1、 @注解配置

所有的注解都是在javax.persistence.*;

  • @Entity 实体注解
  • @Table指定对应的表
  • @Id 配置主键
  • @Column 配置普通属性
  • @OneToMany、@ManyToOne、@ManyToMany、@OneToOne 配置关系
package com.wht.vo;import javax.persistence.*;
import java.util.List;/*** 部门实体** @author JDIT*/
@Entity
@Table(name = "t_dept")
public class DeptVO {@Column(name = "dept_name")private String deptName;@Id@GeneratedValue(strategy = GenerationType.AUTO)@Column(name = "dept_no")private Integer deptNo;@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)@JoinColumn(name = "dept_no")private List<EmployeeVO> employeeVOS;public String getDeptName() {return deptName;}public void setDeptName(String deptName) {this.deptName = deptName;}public Integer getDeptNo() {return deptNo;}public void setDeptNo(Integer deptNo) {this.deptNo = deptNo;}public List<EmployeeVO> getEmployeeVOS() {return employeeVOS;}public void setEmployeeVOS(List<EmployeeVO> employeeVOS) {ployeeVOS = employeeVOS;}
}

运行一下创建,可以父子表一起写入,这种配置很容易出问题,如果十几个表关联的时候,更复杂。

2.1、XML 配置

了解下即可。

3.1、配置到l中

XML配置和@配置引入方式有点不同

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN"".0.dtd" ><hibernate-configuration><session-factory><mapping class="com.wht.vo.EmployeeVO"/><mapping class="com.wht.vo.DeptVO"/><mapping resource="l"/></session-factory>
</hibernate-configuration>

2、主键映射

一个实体最好有主键,并且不要使用基本类型而是包装类,因为级联生成没有主键前可以为null,string的当然不需要这么考虑。

2.1配置主键

  • 注解方式配置
    不是自增的,就手工设置。
  @Id@GeneratedValue(strategy = GenerationType.AUTO)@Column(name = "dept_no")
  • XML配置
    忽略,因为JPA是通用方式。

2.2、主键生成规则

  • GenerationType.AUTO:自动方式,根据底层数据库自动选择。
  • GenerationType.TABLE 一般结合@TableGenerator使用
  • GenerationType.SEQUENCE:又seq确定取值,适配Oracle,db2等
  • GenerationType.IDENTITY:支持DB2、MYSQL等IDENTITY类型主键。

XML类的生成规则这里忽略。

3、 普通属性映射

3.1 @配置普通属性

@Column和@Basic都可以用于配置非主键的普通属性。

@Column

  • nullable :是否可以为空
  • unique :是否唯一
  • insertable:是否允许插入
  • updatable:是否允许更新
  • length:列长度
  • columnDefinition:列类型
  • scale:整数长度
  • percision:小数点长度

@Basic 配置加载方式的,对大文本字段有意义,默认即时加载

  • fetch:加载类型,默认即使加载
  • optional : 是否可以为空
  @Column(name = "salary",scale = 5,precision = 2,columnDefinition = "int")private Double salary;@Column(name = "remark")@Basic(fetch = FetchType.LAZY,optional = true)private String remark;

3.2、XML配置普通属性

忽略

4、日期属性配置

  @Temporal(TemporalType.TIMESTAMP)@Column(name = "hire_date")private Date hireDate;

5、临时属性映射

@Transient JPA标准,这个配置是表明这个字段知识POJO用于运算,不参与和DB字段映射。
可以配置在属性上,也可以配置在getter或setter方法上。

6、版本属性配置

Version一种乐观锁,为了确保不同线程对该数据进行操作。

  • 悲观锁,for update,传统的一种方式,我对一行数据DML,先锁住这一行。其它线程不能进行DML。
  • 乐观锁加一个版本号,每次操作前检查版本号是否有变化,变化了重新读取数据记性操作。

回到首页☞

本文发布于:2024-01-29 05:41:59,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170647812413101.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:实体类
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23