您的位置:首页 > 数据库

使用hibernate创建相对应的数据库表(@注解配置)

2016-11-06 13:43 387 查看
注意:

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
相关文章推荐