hibernate用注解配置实体类的映射
一、注解类
1. @Table 声明了该实体bean映射指定的表(table),目录(catalog)和schema名字 2. @Id 声明了该实体bean的标识属性(对应表中的主键)。 3. @Column 声明了属性到列的映射。该注解有如下的属性: name 可选,列名(默认值是属性名) unique 可选,是否在该列上设置唯一约束(默认值false) nullable 可选,是否设置该列的值可以为空(默认值false) insertable 可选,该列是否作为生成的insert语句中的一个列(默认值true) updatable 可选,该列是否作为生成的update语句中的一个列(默认值true) columnDefinition 可选,为这个特定列覆盖sql ddl片段(这可能导致无法在不同数据库间移植) table 可选,定义对应的表(默认为主表) length 可选,列长度(默认值255) precision 可选,列十进制精度(decimal precision)(默认值0) scale 可选,如果列十进制数值范围(decimal scale)可用,在此设置(默认值0) 4. @GeneratedValue 声明了主键的生成策略。该注解有如下属性: strategy 指定生成的策略(JPA定义的),这是一个GenerationType。默认是GenerationType. AUTO GenerationType.AUTO 主键由程序控制 GenerationType.TABLE 使用一个特定的数据库表格来保存主键 GenerationType.IDENTITY 主键由数据库自动生成(主要是自动增长类型) GenerationType.SEQUENCE 根据底层数据库的序列来生成主键,条件是数据库支持序列。这个值要与generator一起使用,generator 指定生成主键使用的生成器(可能是orcale中的序列)。 5. GenericGenerator 声明了一个hibernate的主键生成策略。支持十三种策略。该注解有如下属性: name 指定生成器名称,它被应用于@GeneratedValue的generator的值。 strategy 指定具体生成器的类名(指定生成策略)。 parameters 得到strategy指定的具体生成器所用到的参数。 6. @Transient 声明了非持久化属性,即数据库中没有相应的映射字段,是一个普通属性。 7. @Temporal 声明了日期类型。 TemporalType.DATE 日期,例:2011-04-12 TemporalType.TIME 时间,例:22:50:30 TemporalType.TIMESTAMP 日期和时间,例:2011-04-12 22:51:30
二、看例子
Role.class
@Entity
@Table(name="role")
public class Role implements Serializable{ private String roleId;
private String roleName;
@Id
@Column(name="roleid")
@GenericGenerator(name="generator", strategy = "uuid.hex")
@GeneratedValue(generator="generator")
public String getRoleId() {
return roleId;
}
public void setRoleId(String roleId) {
this.roleId = roleId;
}
@Column(name="rolename")
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
} }
Student.class
@Entity
@Table(name="student")
public class Student implements Serializable{ private String stuId;
private String stuName;
private Role role; @Id
@Column(name="stuid")
@GenericGenerator(name="generator",strategy="uuid.hex")
@GeneratedValue(generator="generator")
public String getStuId() {
return stuId;
}
public void setStuId(String stuId) {
this.stuId = stuId;
}
@Column(name="stuno")
public String getStuNo() {
return stuName;
}
public void setStuNo(String stuNo) {
this.stuName = stuNo;
}
}
三、在spring容器的配置
实体类写好之后,需要在spring容器中加载,在配置sessionFactory时进行配置,有两种配置的方式
1、使用annotatedClasses
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
</props>
</property>
<!-- <property name="packagesToScan" value="com.demo.entity"/> -->
<property name="annotatedClasses">
<list>
<value>com.demo.entity.Role</value>
<value>com.demo.entity.Student</value>
</list>
</property>
</bean>
2、使用packagesToScan直接对实体类进行扫描
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
</props>
</property>
<property name="packagesToScan" value="com.demo.entity"/>
</bean>
hibernate用注解配置实体类的映射的更多相关文章
- Hibernate用注解实现实体类和表的映射
数据库mysql: 1.一对一 person50表password50表是一对一的关系: password50表中有外键 person_id person实体类: package com.c50.en ...
- Eclipse中通过Hibernate Tools插件实现从数据库逆向生成Hibernate带注解的实体类
一.安装hibernate tools插件 1.在线安装 通过Eclipse的Help->Install New Software 在线安装插件,插件连接为: eclipse helios(3. ...
- Myeclipse 10使用hibernate生成注解(annotation)实体类
以MySQL数据库为例,请在数据库里面建好对应的表. 1.配置数据库链接 打开Myelipse Database Explorer视图 Window-->Open Perspective--&g ...
- Eclipse使用hibernate插件反向生成实体类和映射文件
一般dao层的开发是这样的,先进行数据库的设计,什么E-R图之类的那些,然后选择一款数据库产品,建好表.最后反向生成Java实体和映射文件,这样可以保证一致性和便捷性. 如果用myeclipse,逆向 ...
- Eclipse从数据库逆向生成Hibernate带注解的实体类
http://www.2cto.com/database/201501/372023.html
- 反向生成hibernate实体类和映射文件
工欲善其事,必先利其器.我们可以使用IDE来根据数据库中的表反向生成实体类和映射文件,虽然这些东西手写也并不是难度很大,但是如果存在大量的简单工作需要我们做,也会显得很麻烦. 写在前面 我们反向生成的 ...
- Eclipse从数据库逆向生成Hibernate实体类和映射文件(Eclipse插件系列之HibernateTools)
♣下载安装Eclipse插件(HibernateTools) ♣Eclipse连接数据库(Mysql5.7) ♣新建hibernate.properties和hibernate.cfg.xml文件 ♣ ...
- Hibernate配置实体类的属性
Hibernate配置实体类的属性既可以在页面显示关联实体类的所有属性,在插入该属性时又可以只插入单一属性 private String companyCode; private CompanyEnt ...
- Hibernate中用注解配置一对多双向关联和多对一单向关联
Hibernate中用注解配置一对多双向关联和多对一单向关联 Hibernate提供了Hibernate Annotations扩展包,使用注解完成映射.在Hibernate3.3之前,需单独下载注解 ...
随机推荐
- 6.2 C# 2:利用 yield 语句简化迭代器
class Program { static void Main(string[] args) { object[] values = new object[] { "a", &q ...
- 再谈应用环境下的 TIME_WAIT 和 CLOSE_WAIT
转自:http://blog.csdn.net/shootyou/article/details/6622226 昨天解决了一个 HttpClient 调用错误导致的服务器异常,具体过程如下: htt ...
- Django解决跨域俩方案
方案一:一套干掉全部Primary 首先你的pip下载一个第三方库贼厉害的: pip install corsheaders 然后在项目的setting.py里面引入第三方库,如下: INSTALLE ...
- [Ynoi2015]我回来了
题目大意: 给定一张无向无权图,每次给定若干个二元组\((x_i,y_i)\),定义点\(u\)满足条件,当且仅当存在\(i\),并满足\(dist(u,x_i)\leqslant y_i\)(\(d ...
- [bzoj2044] 三维导弹拦截 (二分图最大匹配+dp)
传送门 Description 一场战争正在A国与B国之间如火如荼的展开. B国凭借其强大的经济实力开发出了无数的远程攻击导弹,B国的领导人希望,通过这些导弹直接毁灭A国的指挥部,从而取得战斗的胜利! ...
- 利用echarts做图表统计
以项目中的扇形统计图为例: 首先,第一步: 引入外部echarts.js文件 其次,第二步: HTML代码块 <div class="count-body-con count-tj&q ...
- ORACLE 树形查询 树查询
前台树结构依据个人的权限登录变化 全部我查询要依据 树的ID 查询以下全部的子节点 以及本节点的信息 select * from table start with id = #{id} connect ...
- Shell脚本递归打印指定文件夹中全部文件夹文件
#!/bin/bash #递归打印当前文件夹下的全部文件夹文件. PRINTF() { ls $1 | while read line #一次读取每一行放到line变量中 do [ -d $1/$li ...
- 在Android系统中添加宏控制代码【原创】
关键词:Android 宏控制 Androd.mk 平台信息:内核:linux3.4.39 系统:android/android5.1平台:S5P4418 作者:庄泽彬(欢迎转载,请注明作者) 邮 ...
- ReflectionSugar 通用反射类
http://www.cnblogs.com/sunkaixuan/p/4635710.html