[size=large]各位大蝦們,小弟有禮了,我想請問一下,怎么只編寫一個java實體類,而不再配置實體類相應的xxx.hbm.xml就可以把這個實體類映射到數據庫的寫法,我自己在相關的書上也學了一點,可是解析的不是很清楚,都是一個就帶過了,我我求一個詳細點的,謝謝閣下們了[/size]
在实体类上使用注解。
Hibernate原来只提供xml的配置方式,不过最近为了支持JPA( Java Persistence API),也支持用Annotations的方式来定义实体与数据库表的映射。要详细学习JPA,请参见《 Pro EJB3 --- Java Persistence API》
jar包的要求,除Hibernate的基本jar包外,额外增加:
hibernate-entitymanager.jar (需要下载hibernate-entitymanager-3.X.X.GA.zip)
给你一个简单的例子:
[code="java"]
package edu.xjtu.tts.model;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
@Entity
@NamedQueries( {
@NamedQuery(name = "getall",
query = "SELECT p FROM Person p"),
@NamedQuery(name = "findPersonByNickname",
query = "SELECT p FROM Person p WHERE p.nickname = :nickname"),
@NamedQuery(name="findPersonsByStatus",
query = "SELECT p FROM Person p WHERE p.status = :status")
})
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String realname;
@Column(unique=true)
private String nickname = "xjtufans";
private String message = "别迷恋哥,哥只是个传说";
private String email;
private String password;
private Date signOn;
private boolean logOn = false;
@Enumerated(EnumType.STRING)
@Column(name = "status")
private StatusEnum status;
。。。。。。。 省略getter 和 setter 方法 。。。。。。
}
[/code]
上面配置的结果是:
Person表
列名 结构
ID 整型 (主键)
RealName 字符型
NickName 字符型 (唯一)
Password 字符型
Email 字符型
Message 字符型(默认值:别迷恋哥,哥只是个传说)
SignOn 时间型
IsLogOn 布尔型 (默认值为false)
Status 枚举型
楼上的说的已经非常明确了。简历楼主参考。
hibernate 的Annotation的方式。现在正被广泛运用