使用hibernate创建相对应的数据库表(@注解配置)
2016-11-06 13:43
387 查看
注意:
1. 配合spring使用的时候,需要声明扫描加载被@Entity注解的实体类,使用方法为
(在applicationContext.xml的中声明)
主要内容:
1. 实体类一般拥有id,普通属性,集合属性,分别对应主键,普通列,外键。
在@注解配置的时候,为类使用@Entity注解,声明该类为一个实体类。
@注解中,@Table一般结合在@Entity中,例如(@Entity(name=”tablename”)或者直接省略name,这样的话表名就是默认该类的类名)
用@Id配置主键,@Column配置普通属性(默认为该注解,可以省略),@OneToOne,@OneToMany,@ManyToOne,@ManyToMany配置实体的关系(详情。。。)
2. 主键映射
主键尽可能使用可以为null值的类型,例如Integer,Long,String,而不是使用int,long(默认为0)
主键生成规则
例如
@GeneratedValue(strategy = GenerationType.AUTO)
JPA提供的四种标准用法为TABLE,SEQUENCE,IDENTITY,AUTO.
TABLE:使用一个特定的数据库表格来保存主键。
SEQUENCE:根据底层数据库的序列来生成主键,条件是数据库支持序列。
IDENTITY:主键由数据库自动生成(主要是自动增长型)
AUTO:主键由程序控制。(如果为MySQL的话,为自动增长模式,相对于integer)
3. 普通属性的映射
普通属性使用@Column和@Basic,二者都可以省略,如果省略,则 默认模式(一般使用@Column比较多)
@Column属性:nullable(是否允许为空),unique(是否唯一),insertable(是否允许插入),updatable(是否允许更新),length(列长度),columnDefinition(列类型),scale(整数长度),precision(小数点精度)。
默认
@Column(name=”test”,nullable=true,columnDefinition=”number”,insertable=true,length=”255”,unique=true,updatable=true,precision=2,scale=4)
private double test;
为int类型设置默认值columnDefinition=“int defautl 0”;
4. 日期属性配置
@Temporal(TemporalType.TIMESTAMP)
@Column
Private Date time;
DATE(只有年月日),TIME(只有时分秒等时间信息),TIMESTMAP(都有)
5. 如果数据库需要存储大型数据时,例如论坛的内容什么的,使用的是text
@Type(type=”text”)
@Column(nullable=false)
private String critic;
6. Hibernate基本数据类型。(其中,boolean,yes_no和 true_false对应Java中的java.lang.Boolean)。
1. 配合spring使用的时候,需要声明扫描加载被@Entity注解的实体类,使用方法为
(在applicationContext.xml的中声明)
<!-- 用于启动注解创建数据库表 --> <property name="packagesToScan"> <list> <value>com/wsk/bean</value> </list> </property>
2. 如果使用的是xml声明的话,声明则为
<property name="mappingResources"> <list> <value>com/wsk/bean/T1.hbm.xml</value> <value>com/wsk/bean/T2.hbm.xml</value></list> </property>
3. 所以的@注解都是javax.persistence.*下的,而不是org.hibernate.*下的。
主要内容:
1. 实体类一般拥有id,普通属性,集合属性,分别对应主键,普通列,外键。
在@注解配置的时候,为类使用@Entity注解,声明该类为一个实体类。
@注解中,@Table一般结合在@Entity中,例如(@Entity(name=”tablename”)或者直接省略name,这样的话表名就是默认该类的类名)
用@Id配置主键,@Column配置普通属性(默认为该注解,可以省略),@OneToOne,@OneToMany,@ManyToOne,@ManyToMany配置实体的关系(详情。。。)
2. 主键映射
主键尽可能使用可以为null值的类型,例如Integer,Long,String,而不是使用int,long(默认为0)
主键生成规则
例如
@GeneratedValue(strategy = GenerationType.AUTO)
JPA提供的四种标准用法为TABLE,SEQUENCE,IDENTITY,AUTO.
TABLE:使用一个特定的数据库表格来保存主键。
SEQUENCE:根据底层数据库的序列来生成主键,条件是数据库支持序列。
IDENTITY:主键由数据库自动生成(主要是自动增长型)
AUTO:主键由程序控制。(如果为MySQL的话,为自动增长模式,相对于integer)
3. 普通属性的映射
普通属性使用@Column和@Basic,二者都可以省略,如果省略,则 默认模式(一般使用@Column比较多)
@Column属性:nullable(是否允许为空),unique(是否唯一),insertable(是否允许插入),updatable(是否允许更新),length(列长度),columnDefinition(列类型),scale(整数长度),precision(小数点精度)。
默认
@Column(name=”test”,nullable=true,columnDefinition=”number”,insertable=true,length=”255”,unique=true,updatable=true,precision=2,scale=4)
private double test;
为int类型设置默认值columnDefinition=“int defautl 0”;
4. 日期属性配置
@Temporal(TemporalType.TIMESTAMP)
@Column
Private Date time;
DATE(只有年月日),TIME(只有时分秒等时间信息),TIMESTMAP(都有)
5. 如果数据库需要存储大型数据时,例如论坛的内容什么的,使用的是text
@Type(type=”text”)
@Column(nullable=false)
private String critic;
6. Hibernate基本数据类型。(其中,boolean,yes_no和 true_false对应Java中的java.lang.Boolean)。
映射类型 Java类型 标准SQL字段类型 integer int or java.lang.Integer INTEGER long long or java.lang.Long BIGINT short short or java.lang.Short SMALLINT float float or java.lang.Float FLOAT double double or java.lang.Double DOUBLE big_decimal java.math.BigDecimal NUMERIC character java.lang.String CHAR(1) string java.lang.String VARCHAR byte byte or java.lang.Byte TINYINT boolean boolean or java.lang.Boolean yes_no boolean or java.lang.Boolean CHAR(1('Y'or'N') true_false boolean or java.lang.Boolean CHAR(1)('Y'or'N') date java.util.Date or java.sql.Date DATE time java.util.Date or java.sql.Time TIME timestamp java.util.Date or java.sql.Timestamp TIMESTAMP calendar java.util.Calendar TIMESTAMP calendar_date java.util.Calendar DATE 大数据类型 binary byte[] VARBINARY(or BLOB) text java.lang.String CLOB serializable java.io.Serializable的任何实例 VARBINARY(or BLOB) clob java.sql.Clob CLOB blob java.sql.Blob BLOB 其它数据类型 class java.lang.Class VARCHAR locale java.util.Locale VARCHAR timezone java.util.TimeZone VARCHAR currency java.util.Currency VARCHAR
相关文章推荐
- 使用hibernate根据配置的实体bean类无法自动创建数据库表
- 注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(五):使用@Component 来简化bean的配置
- hibernate 在不使用xml配置的方式生成数据库表的方法
- 注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(六): 一些常用的数据库 注解
- 注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(四):使用 命名空间 简化配置
- eclipse 中 使用Hibernate Tools 3.4 从数据库方向生成 hibernate 配置文件
- 使用hibernate的SchemaExport来创建数据库
- 添加JBoss插件中的hibernate tools后怎么创建hibernate配置文件和对数据库的表进行反转映射
- 注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(六): 一些常用的数据库 注解
- Hibernate.cfg.xml配置Hibernate连接数据库和对应的数据表
- [注解的力量]Spring 2.5 JPA hibernate 使用方法的点滴整理(五):使用@Component 来简化bean的配置
- 注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(四):使用 命名空间 简化配置
- hibernate中根据model的配置文件创建数据库
- 在Hibernate中使用数据库字段默认值的配置
- 根据hibernate.cfg.xml配置文件和相应实体类及其.hbm.xml文件生成对应的数据库表
- 配置----Hibernate可配置的编程方式,驱动、URL、数据库访问岁用户名、密码等用使用Java代码手动加载!
- 注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(六): 一些常用的数据库 注解
- 使用hibernate自动在MYSQL中创建表,极其简单,改下配置文件。
- 使用此数据库模板, 以便创建针对一般用途进行优化的预配置的数据库。
- 注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(四):使用 命名空间 简化配置