(十) 使用Hibernate 注解
- Hibernate里有两种注解 :
- Hibernate 注解
- JPA注解
案例一: 用注解对非复合主键的表生成配置文件
package bean; 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 org.hibernate.annotations.GenericGenerator; @Entity // 表明这个类是一个实体类,所谓实体类就是该类对应数据库中的表
@Table(name = "user") // 该实体类对应着数据库中的user表
public class UserBean { @Id
@GeneratedValue(generator="a")
@GenericGenerator(name="a",strategy="assigned") //设置主键增长机制,assigned为程序中定义,这也是默认方式。
private Integer userid;
private String username;
private String password;
private String sex;
@Column(name = "is_admin") // 表示idAdmin这个属性对应着数据库中的is_admin这个字段
private String isAdmin; public UserBean() { } public UserBean(Integer userid, String username, String password,
String sex, String isAdmin) {
super();
this.userid = userid;
this.username = username;
this.password = password;
this.sex = sex;
this.isAdmin = isAdmin;
} public Integer getUserid() {
return userid;
} public void setUserid(Integer userid) {
this.userid = userid;
} public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
} public String getIsAdmin() {
return isAdmin;
} public void setIsAdmin(String isAdmin) {
this.isAdmin = isAdmin;
}
}
- 更新总配置文件
<mapping class="bean.UserBean"/>
案例二: 用注解对含有复合主键的表生成配置文件
package bean; import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table; /**
* Score entity. @author MyEclipse Persistence Tools
*/
@Entity
@Table(name="score")
public class Score implements java.io.Serializable { // Fields
@Id
@EmbeddedId // 表示主键是一个复合主键
private ScoreId id;
private Integer score; // Constructors /** default constructor */
public Score() {
} /** minimal constructor */
public Score(ScoreId id) {
this.id = id;
} /** full constructor */
public Score(ScoreId id, Integer score) {
this.id = id;
this.score = score;
} // Property accessors public ScoreId getId() {
return this.id;
} public void setId(ScoreId id) {
this.id = id;
} public Integer getScore() {
return this.score;
} public void setScore(Integer score) {
this.score = score;
} }
- ScoreId.java
package bean; import javax.persistence.Embeddable; /**
* ScoreId entity. @author MyEclipse Persistence Tools
*/
@Embeddable //表示该类可被其他类嵌入
public class ScoreId implements java.io.Serializable { // Fields private Integer userid;
private String subject; // Constructors /** default constructor */
public ScoreId() {
} /** full constructor */
public ScoreId(Integer userid, String subject) {
this.userid = userid;
this.subject = subject;
} // Property accessors public Integer getUserid() {
return this.userid;
} public void setUserid(Integer userid) {
this.userid = userid;
} public String getSubject() {
return this.subject;
} public void setSubject(String subject) {
this.subject = subject;
} public boolean equals(Object other) {
if ((this == other))
return true;
if ((other == null))
return false;
if (!(other instanceof ScoreId))
return false;
ScoreId castOther = (ScoreId) other; return ((this.getUserid() == castOther.getUserid()) || (this
.getUserid() != null && castOther.getUserid() != null && this
.getUserid().equals(castOther.getUserid())))
&& ((this.getSubject() == castOther.getSubject()) || (this
.getSubject() != null && castOther.getSubject() != null && this
.getSubject().equals(castOther.getSubject())));
} public int hashCode() {
int result = 17; result = 37 * result
+ (getUserid() == null ? 0 : this.getUserid().hashCode());
result = 37 * result
+ (getSubject() == null ? 0 : this.getSubject().hashCode());
return result;
} }
- 更新总配置文件
<mapping class="bean.Score"/>
使用注解方式配置bean的时候,Hibernate默认把bean中的所有成员属性都与数据库中的字段相关联,如果有些成员属性并不是数据库中的字段的时候,此时就会报错,
则这时在这些属性前添加 @Transient 注解, 表明这个属性不是数据库的字段。
(十) 使用Hibernate 注解的更多相关文章
- Spring+SpringMVC+MyBatis深入学习及搭建(十六)——SpringMVC注解开发(高级篇)
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/7085268.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十五)——S ...
- Hibernate注解----关联映射注解以及课程总结详解----图片版本
上一篇,记录了Hibernate注解----类级别注解以及属性注解详解 ,我们这一节主要讲解的是Hibernate注解----关联映射注解以及课程总结详解. 本节的主要内容: 第3章 关联映射注解 3 ...
- Hibernate注解----类级别注解以及属性注解详解----图片版本
这篇文章是我在慕课网上学习Hibernate注解的时候进行手机以及整理的笔记. 今天把它分享给大家,希望对大家有用.可以进行收藏,然后需要的时候进行对照一下即可.这样能起到一个查阅的作用. 本文主要讲 ...
- hibernate注解随笔—10月8日
hibernate注解(herbinate4 jar包注解可用,使用hibernate3.3注解失败) 如果javabean与数据库中表名一致(不区分大小写),则注解不用写@Table(name=&q ...
- Hibernate注解使用以及Spring整合
Hibernate注解使用以及Spring整合 原文转自:http://wanqiufeng.blog.51cto.com/409430/484739 (1) 简介: 在过去几年里,Hibernate ...
- Hibernate注解映射联合主键的三种主要方式
今天在做项目的时候,一个中间表没有主键,所有在创建实体的时候也未加组件,结果报以下错误: org.springframework.beans.factory.BeanCreationException ...
- 【maven + hibernate(注解) +spring +springMVC】 使用maven搭建项目
研究,百度,查资料+好友帮助,使用MyEcplise2015工具,通过maven搭建hibernate+springMVC+spring的项目,数据库采用MySql5.5 不过使用的版本会在项目搭建过 ...
- Hibernate注解映射sequence时出现无序增长问题+hibernate 映射 oracle ID自动增长:
Hibernate注解映射sequence时出现无序增长问题+hibernate 映射 oracle ID自动增长: 通过Hibernate注解的方式映射oracel数据库的sequence主键生成器 ...
- 。。。Hibernate注解配置的注意事项。。。
今天本来打算录视频的,突然遇到一个拦路虎,Hibernate注解配置,有一个注意点:要么都在属性上面注解配置,要么都在getXX()方法上面用注解配置,要不然就会报错: Caused by: org. ...
随机推荐
- Mysql -- BLOB, TEXT, GEOMETRY or JSON column 'result' can't have a default value
执行上面的代码, 即可解决, 不过mysql重启之后还会有问题. 根本解决: 将mysql的配置文件中的sql_mode项 注释掉.
- github又提交不了代码了..... X_X
如下: 我们使用git提交代码过程中,突然就登录不上了 原因是 用户名被更改了:git@gitlab.0easy.com 是你的用户名 造成的原因是: 我们clone代码过程中选择了SSH的地址 解决 ...
- python2,socket多进程的错误pickle.PicklingError: Can't pickle
python2,socket多进程的错误pickle.PicklingError: Can't pickle 源码: #coding:utf-8 import socket import pickle ...
- SQL 模糊查询条件的四种匹配模式
转: 执行数据库查询时,有完整查询和模糊查询之分. 一般模糊语句格式如下: SELECT 字段 FROM 表 WHERE 某字段 LIKE 条件; 其中,关于条件,SQL提供了四种匹配模式: 1.%: ...
- 阶段5 3.微服务项目【学成在线】_day09 课程预览 Eureka Feign_05-Feign远程调用-客户端负载均衡介绍
2 Feign远程调用 在前后端分离架构中,服务层被拆分成了很多的微服务,服务与服务之间难免发生交互,比如:课程发布需要调用 CMS服务生成课程静态化页面,本节研究微服务远程调用所使用的技术. 下图是 ...
- 详解VMware 虚拟机中添加新硬盘的方法
一.VMware新增磁盘的设置步骤 (建议:在设置虚拟的时候,不要运行虚拟机的系统,不然添加了新的虚拟磁盘则要重启虚拟机) 1.选择“VM”----“设置”并打开,将光标定位在“硬盘(SCSI)”这一 ...
- 123457123456#1#-----com.threeapp.qianShuiTingYX01-----潜水艇跑酷游戏01
com.threeapp.qianShuiTingYX01-----潜水艇跑酷游戏01
- python 基础之确认文件是否存在
def check_exist_bills(): file_dir=os.listdir('../db') bills_db_list=[] for item in file_dir: if item ...
- ubuntu 16.04 修改网卡显示名称
~# sudo nano /etc/default/grub找到:GRUB_CMDLINE_LINUX=""改为:GRUB_CMDLINE_LINUX="net.ifna ...
- IIS添加对ashx文件的支持
IIS添加对ashx文件的支持 第一步:每个网站都有个“处理程序映射”,用于添加对各种文件的处理程序 第二步:进入“处理程序映射",可以看到对各种文件的处理程序列表,其中就有对ashx文件的 ...