java 注解映射数据库字段_浅谈hibernate之映射文件VS映射注解

前言

对于java开发者而言,注解应该不是一个陌生的概念,早在JavaSE阶段,例如@Override标记重写父类方法或实现接口方法,@Test标记单元测试方法,所以我们可以简单地把它理解为一种有特殊含义的标记...在开发过程中,我们还可以用注解方式替代配置文件实现相关功能,例如Java web开发中,3.0版本后,利用@WebServlet、@WebListener等注解分别可以替代web项目XML配置文件中相关内容。而本文中讲述的就是Hibernate的映射配置文件与映射注解的对比,这两种方式均可以实现映射功能,为了避免先入为主,在此先不阐述孰优孰劣,接下来以实体类基本映射示例,分别用配置文件和注解方式实现。

hibernate.cfg.xml配置文件在使用两种方式时的变动

/p>

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

com.mysql.jdbc.Driver

jdbc:mysql://127.0.0.1/web?characterEcoding=utf-8

root

123456

org.hibernate.dialect.MySQLDialect

实体类映射

背景:数据库中一个用户表person,字段四个,包涵自增主键id、姓名name、性别sex、年龄age,映射实体类为Person,属性四个,id、name、gender、age。注意这里实体类属性名和数据表中字段名如果不一致,例如这里的sex和gender,在映射文件中标签中name和colum两个属性都要写上,在注解中也不能简化省略@column,column从译意上大家应该都能知道它是对应数据库的字段上,如果不指定字段,默认情况下,系统会把映射文件中的name属性值作为字段名,注解方式时会把属性名作为字段名。另外一个要注意的地方就是类属性是区分大小写的,而字段是不区分大小写的。

映射配置文件

/p>

"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

映射注解方式

package demo.pojo;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.Table;

//实体类属性注解,这里统一写在各属性的get方法上

@Entity//标记实体类

@Table(name="person",catalog="web")//name对应数据表名,catalog对应数据库名

public class Person {

private Integer id;

private String name;

private String gender;

private Integer age;

@Id//标记主键

@Column(name="id")//主键字段名,这里与类属性id是对应相同的,此行可以简化不写

@GeneratedValue(strategy=GenerationType.AUTO)//主键生成策略,自动识别

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

@Column(name="name")//主键字段名,这里与类属性name是对应相同的,此行可以简化不写

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

@Column(name="sex")//主键字段名,这里与类属性gender是对应,但不相同,不可省略

public String getGender() {

return gender;

}

public void setGender(String gender) {

this.gender = gender;

}

//省略注解

public Integer getAge() {

return age;

}

public void setAge(Integer age) {

this.age = age;

}

@Override

public String toString() {

return "Person [id=" + id + ", name=" + name + ", gender=" + gender + ", age=" + age + "]";

}

}

注意点

0.在hibernate.cfg.xml配置文件中,使用两种映射方式分别要填映射配置源文件的位置和映射类的全名,一个是,一个是;

1.在使用注解方式时,实体类中导入不要导成Hibernate下的,这里引入都是JPA(Java Persistence API)范畴下的类,不要因为是hibernate框架下,顺其自然地以为是那个Hibernate下的类,图示如下

24072accb04fd6eb78c93f52b0327571.png

小结

相较于冗长的一段段代码和各个单独的配置文件,注解无疑会显得小巧方便一些,特别是还有后面的关联映射(一对一、一对多、多对一、多对多),映射多了,所需要的配置文件更多,使用注解直接省略了这些文件。深入理解好注解对框架的学习也很有帮助,许多框架中都引入了注解的技术,不论是否认可注解的优势,个人认为掌握好注解的使用都是很有必要的。

以上这篇浅谈hibernate之映射文件VS映射注解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 Hibernate 的 @Type 注解来指定 boolean 类型在数据库中的映射类型,例如: @Column(name = "is_active") @Type(type = "yes_no") private boolean isActive; 这里使用了 "yes_no" 映射类型,将 boolean 类型映射为 char(1) 类型的 'Y' 或 'N'。 ### 回答2: Hibernate是一个流行的Java持久化框架,它提供了对象关系映射(ORM)的功能,使得开发人员可以使用面向对象的思维来操作数据库。在Hibernate中,boolean类型的Java属性可以映射数据库字段的char类型。 在Hibernate中,有一个`@Column`注解,可以用来指定属性与数据库字段映射关系。对于boolean类型的属性,可以使用`columnDefinition`属性来指定数据库字段的类型。我们可以将`columnDefinition`属性设置为"char(1)",这样Hibernate就会将boolean类型的属性映射到char类型的数据库字段。 例如,我们可以定义一个Person实体类,其中包含一个名为isEmployed的boolean属性: ```java @Entity @Table(name = "person") public class Person { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "is_employed", columnDefinition = "char(1)") private boolean isEmployed; // 其他属性和方法 } ``` 在上面的例子中,`@Column`注解的`columnDefinition`属性指定了数据库字段的类型为char(1),即使用一个字符来表示boolean属性。 当我们使用Hibernate进行数据库操作时,Hibernate会自动将boolean属性映射到char类型的数据库字段,其中true会被映射为字符"1",false会被映射为字符"0"。 总之,Hibernate中的boolean类型可以使用char类型的数据库字段进行映射。我们可以通过`columnDefinition`属性来指定数据库字段的类型,将true映射为字符"1",将false映射为字符"0"。这样,在使用Hibernate进行数据库操作时,可以自动实现Java boolean类型与数据库字段char类型的转换。 ### 回答3: 在Hibernate中,Java的Boolean类型可以映射数据库中的Char类型,这是通过使用Hibernate注解或XML映射文件来实现的。 如果我们想将Java的Boolean类型属性映射数据库中的Char类型字段,我们可以在实体类使用Hibernate注解@Type来指定映射类型。例如,我们可以使用@Type注解,并设置type属性为"yes_no",这将会将Boolean类型属性映射数据库中的Char(1)类型,并使用"Y"表示true,"N"表示false。 另外,我们还可以使用Hibernate注解@Column来指定数据库字段的相关属性。例如,我们可以使用@Column注解,并设置columnDefinition属性为"char(1)",这将会在数据库中创建一个Char类型长度为1的字段。 以下是一个示例代码: ```java @Entity @Table(name = "example") public class ExampleEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(columnDefinition = "char(1)") @Type(type = "yes_no") private Boolean flag; // 其他属性和方法... } ``` 通过这种方式,我们可以将Java的Boolean类型属性映射数据库中的Char类型字段,实现在Hibernate中对这两种类型之间的映射

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值