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

注意:
1. 配合spring使用的时候,需要声明扫描加载被@Entity注解的实体类,使用方法为
(在applicationContext.xml的中声明)

    
    <property name="packagesToScan">
        <list>
            <value>com/wsk/beanvalue>
        list>
    property>
2. 如果使用的是xml声明的话,声明则为
    <property name="mappingResources">
        <list>
            <value>com/wsk/bean/T1.hbm.xmlvalue>
            <value>com/wsk/bean/T2.hbm.xmlvalue>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

你可能感兴趣的:(问题解决方案)