package com.wqm.step.pojo;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
/**
* Hibernate指定实体类
* JPA注解完成实体类配置映射
* @author Administrator
*
*/
@Entity // 必须定义实体,用于表示该类与数据库中的包关联,这是java提供的接口,由hibernate实现
// name 指定表名, catelog 指定数据库的名称
/** 注意!!!!!: 配置文件的编写有两种可能:(相同点:column用于指定字段名,当不配置时,默认类的属性名与字段名一致)
* 1. 数据库的表已经创建 当数据库的表已经创建好了,配置字段与属性对应关系时,
* 可以只配置name,其他不用配置length和type会自动匹配数据(就算定义了也是以数据库类型为准)
* 2. 数据库的表使用hibernate自动创建 (要开启hibernate.cfg.xml中的<property name="hibernate.hbm2ddl.auto">update</property>自动建表/更新表,
* 但是只能添加) 当数据库的表未创建或未创建完全,也可以只配置name属性,type默认为实体类中的类型,不过为了优化数据库可以配置上length,否则默认为255 -->
* 配置实体类与字段对应关系 name :实体类的全名 table :表的名称(可以省略,默认表名称与类名称一致) catelog:数据库名称(可以省略,默认参考hibernate.cfg.xml中连接的数据名) */
@Table(name = "person")
public class Person {
// 例:
// @GeneratedValue // 定义主键的生成策略 , 默认为 native,意思是根据底层数据库自动选择
// 使用下面方法自定义主键生成策略
/**@GeneratedValue(strategy = GenerationType.IDENTITY)可选
*
Hibernate中定义的主键类型包括:自然主键和代理主键:
自然主键:具有业务含义 字段 作为主键,比如:学号、身份证号
代理主键:不具有业务含义 字段作为主键(例如 自增id),比如:mysql自增主键,oracle序列生成的主键、uuid()方法生成的唯一序列串
建议:企业开发中使用代理主键!
increment 代理主键。由hibernate维护一个变量,每次生成主键时自动以递增。
问题:如果有多个应用访问一个数据库,由于每个应用维护自己的主键,所以此时主键可能冲突。建议不采用。
优点:可以方便跨平台
缺点:不适合高并发访问
identity 代理主键。由底层数据库生成表识符。条件是数据库支持自动增长数据类型。比如:mysql的自增主键,oracle不支持主键自动生成。
如果数据库支持自增建议采用。
优点:由底层数据库维护,和hibernate无关
缺点:只能对支持自动增长的数据库有效,例如mysql
sequence 代理主键。Hibernate根据底层数据库序列生成标识符。条件是数据库支持序列。比如oracle的序列。
如果数据库支持序列建议采用。
优点:由底层数据库维护,和hibernate无关
缺点:数据库必须支持sequence方案例如oracle
native 代理主键。根据底层数据库对自动来选择identity、sequence、hilo
由于生成主键策略的控制权由hibernate控制,所以不建议采用。
优点:在项目中如果存在多个数据库时使用
缺点:效率比较低
uuid 代理主键。Hibernate采用128bit位的UUID算法来生成标识符。该算法
能够在网络环境中生成唯一的字符串标识符。
此策略可以保证生成主键的唯一性,并且提供了最好的数据库插入性能和数据库平台的无关性。建议采用。
优点:与数据库无关,方便数据库移植,效率高,不访问数据库就可以直接生成主键值,并且它能保证唯一性。
缺点:uuid长度大(32位),占用空间比较大,对应数据库中类型 char varchar
assigned 自然主键。由java程序负责生成标识符。
不建议采用。
尽量在操作中避免手动对主键操作
generator:表示主键生成器的名称,这个属性通常和ORM框架相关,例如,Hibernate可以指定uuid、native等主键生成方式.
示例:
@Id
@GeneratedValues(strategy=StrategyType.INDETITY)
public int getId() {
return id;
}*/
@Id // 指定主键
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
// 定义数据表(name: 数据表的名称, length:字段长度,nulabel:该字段是否可以为空,unique:表示该字段中的值唯一)
@Column(name = "c_name", length = 30, nullable = true, unique = true)
private String name;
/**
* 可以选择
* TemporalType.DATA 只有年月日
* TemporalType.TIME 只有小时分钟秒
* TemporalType.TIMESTAMP有年月日小时分钟秒
*
*/
@Temporal(TemporalType.TIMESTAMP) // 定义日期类型, 该类型既有年月日也有十分秒
private Date publicationDate;// 出版日期
private Double price;// 价格, 如果没有添加注解,也会自动的在表中生成
// 当表已经创建好以后,其实是不需要@Column的配置,一切以数据自己为准
@Column(name = "ddd", length = 50, nullable = true, unique = true)
private String ddd;
@Transient// // 表示该属性只表示不生成在数据表中
private String msg;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getPublicationDate() {
return publicationDate;
}
public void setPublicationDate(Date publicationDate) {
this.publicationDate = publicationDate;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public String getDdd() {
return ddd;
}
public void setDdd(String ddd) {
this.ddd = ddd;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
之前也发了一个,这个包含之前的,还添加了hibernate对数据库操作的代码(注意:controller层两个QBC/SQLTest代码不能运行,只是写出了操作数据库的除了HQL的另外2种方式)。我发现现在还是有很多公司用hibernate+springmvc。于是我花了几天时间搭建出来的hibernate+springmvc的框架,这个框架去除hibernate配置, 将配置全部整合到spring中,开发中使用注解开发即可,很方便,以后我还会持续更新的。 这是一个maven项目,放在eclipse中,改下mysql数据库用户名+密码+自己建一个数据库名,用tomcat运行下。 数据库也就创建好了
资源推荐
资源详情
资源评论
























收起资源包目录
























































































共 62 条
- 1
资源评论


四大天王之一
- 粉丝: 75
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 【Android应用源码】自定义动画toast.zip
- 【Android应用源码】自动发送短信.zip
- 【Android应用源码】自动开关机实现.zip
- 永磁同步电机的5次7次电流谐波注入补偿Simulink模型仿真
- 现代密码学:理论与实践精华
- python定量数据扰乱
- python-新旧映射
- maven下载安装与配置教程.md
- 模拟IC技术:BlueCoreTM3-Flash与BlueCore3-Audio Flash集成电路特性解析及其应用
- 孤岛模式下双台逆变器下垂控制技术:确保电网频率与电压稳定
- maven下载安装与配置教程.md
- maven下载安装与配置教程.md
- 【Android应用源码】最全的OCR图像识别技术源码内有说明.zip
- 【Android应用源码】左右翻页翻书.zip
- maven下载安装与配置教程.md
- elasticsearch-6.6.2版本相关的压缩包
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
