Hibernate之基础配置

1、  ehibernate.cfg.xml: show_sql

2、  hibernate.cfg.xml:format_sql

3、  表名和类名不同,对表名进行配置

a) Annotation:@Table

b) Xml:自己查询

4、  字段名和属性相同

a) 默认为@Basic

b) Xml中不用写column

5、    字段名和属性名不同

a) Annotation:@Column

b) Xml:自己查询

6、    不需要psersistence的字段

a) Annotation:@Transient

b) Xml:不写

7、    映射日期与时间类型,指定时间精度

a) Annotation:@Temporal

b) Xml:指定type

8、    映射枚举类型

a) Annotation:@Enumerated

b) Xml:麻烦

9、    字段映射的位置(field或者get方法)

a) Best practice:保持field和get/set方法的一致

10、    @Lob

11、    课外:CLOB BLOB类型的数据存取

12、    课外:Hibernate自定义数据类型

13、    Hibernate类型


ehibernate.cfg.xml : show_sql

输出所有SQL语句到控制台. 有一个另外的选择是把org.hibernate.SQL这个log category设为debug。

取值: true | false

hibernate.cfg.xml :format_sql

在log和console中打印出更漂亮的SQL。

取值: true | false

True样式:

16:32:39,750 DEBUG SchemaExport:377 -   
    create table Teacher (  
        id integer not null,  
        name varchar(255),  
        title varchar(255),  
        primary key (id)  
 )  

False样式:

16:33:40,484 DEBUG SchemaExport:377 - create table Teacher (id integer not null, name varchar(255), title varchar(255), primary key (id))  

 表名和类名不同,对表名进行配置


Annotation:使用 @Table(name=”tableName”) 进行注解

         例如:

  /** 
 * @Entity 表示下面的这个Teacher是一个实体类 
 * @Table 表示映射到数据表中的表名,其中的name参数表示"表名称" 
 * @Id 表示主键Id,一般放在getXXX前面 
 */  
@Entity  
@Table(name="_teacher")  
public class Teacher {  
[……]  
}  

Xml:
<class name="Student" table="_student">  

字段名和属性相同

Annotation:默认为@Basic

注意:如果在成员属性没有加入任何注解,则默认在前面加入了@Basic

 

Xml中不用写column

字段名和属性名不同

Annotation:使用@Column(name=”columnName”)进行注解

         例如:

/** 
 * @Entity 表示下面的这个Teacher是一个实体类 
 * @Table 表示映射到数据表中的表名,其中的name参数表示"表名称" 
 * @Column 表示实体类成员属性映射数据表中的字段名,其中name参数指定一个新的字段名 
 * @Id 表示主键Id 
 */  
@Entity  
@Table(name="_teacher")  
public class Teacher {  
  
    private int id;   
    private String name;      
    private String title;  
  
    //设置主键使用@Id  
    @Id  
    public int getId() {  
        return id;  
    }  
  
    @Column(name="_name")//字段名与属性不同时  
    public String getName() {  
        return name;  
    }  
……  

Xml:

<property name="name" column="_name"/>  

不需要(持久化)psersistence的字段

就是不实体类的某个成员属性不需要存入数据库中

Annotation:使用@Transient 进行注解就可以了。

例如:

@Transient  
    public String getTitle() {  
        return title;  
}  

Xml:不写(就是不需要对这个成员属性进行映射)


映射日期与时间类型,指定时间精度

Annotation:使用@Temporal(value=TemporalType)来注解表示日期和时间的注解

            其中TemporalType有三个值:TemporalType.TIMESTAMP 表示yyyy-MM-dd HH:mm:ss

                                     TemporalType.DATE      表示yyyy-MM-dd

                                     TemporalType.TIME      表示HH:mm:ss


@Temporal(value=TemporalType.DATE)  
    public Date getBirthDate() {  
        return birthDate;  
}  

注意:当使用注解时,属性为value时,则这个属性名可以省略,例如:@Temporal(TemporalType)

Xml:使用type属性指定hibernate类型

<property name="birthDate" type="date"/>  

。  注意:hibernate日期时间类型有:date, time, timestamp,当然也可以使用Java包装类。


 映射枚举类型

 

Annotation:使用@Enumerated(value=EnumType)来注解表示此成员属性为枚举映射到数据库

        其中EnumType有二个值:①EnumType.STRING  表示直接将枚举名称存入数据库

                             ②EnumType.ORDINAL 表示将枚举所对应的数值存入数据库

Xml:映射非常的麻烦,先要定义自定义类型,然后再使用这个定义的类型……





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值