hibernate的映射信息有xml配置与注解配置2种方式。我一般喜欢使用注解。下面使用注解配置一个映射类:
@Table(schema="dbo")
@Entity
public class DatabaseLog {
int DatabaseLogID;、、
String Schema;
String TSQL;
@Id
public int getDatabaseLogID() {
return DatabaseLogID;
}
public void setDatabaseLogID(int databaseLogID) {
DatabaseLogID = databaseLogID;
}
@Column(name = "[schema]")
public String getSchema() {
return Schema;
}
public void setSchema(String schema) {
Schema = schema;
}
public String getTSQL() {
return TSQL;
}
public void setTSQL(String tSQL) {
TSQL = tSQL;
}
}
@Entity
注解将一个类声明为实体
Bean, @Id
注解声明了该实体
Bean
的标识属性。
最简单的配置只要配置这2个注解就能把实体映射配置好了。
@table 注解相关属性:
name="databaseLog" ,默认值与类名相同(大小写一般不敏感)
schema="person",一般都是取默认值,不用配置。除非类是sql server 里的表在不在dbo而是在其他架构,如person架构时使用。
catelog="test", 一般默认为配置文件中连接的数据库,如果表不在默认数据库则需要指定。如:test。
映射主键属性
@Id 注解可将实体Bean中某个属性定义为主键,使用@GenerateValue注解可以定义该标识符的生成策略。
• AUTO - 可以是 identity column, sequence 或者 table 类型,取决于不同底层的数据库
• TABLE - 使用table保存id值
• IDENTITY - identity column
• SEQUENCE - sequence
一般id设置为自动递增:
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column 一般字段不用定义,默认为对应的属性名。当属性名是数据库关键字时需要注解其name属性,加上中括号。或者修改字段名,可以在column属性中添加`` (反引号就是1前面的按键,来指定名称)
@Column(name="[schema]") 或者 @Column(name="`schema`")
//指定生产的外键的字段名,默认是fundType_id
@JoinColumn(name = "id", nullable = false)
//LAZY表示不会马上取关联数据,EAGER表示马上取出关联的其他属性。
@OneToMany(fetch="FetchType.EAGER") //默认是lazy,一般都采用默认值,可不用设置fetch属性。
@ManyToOne(fetch="FetchType.LAZY") //默认是eager一般都采用默认值,可不用设置fetch属性。