PO = persisent object 持久对象
POJO = plain ordinary java object 简单的java对象,实际就是普通JavaBeans。
简单来说 PO = POJO + 映射文件。持久对象必须对应数据库中的entity,所以和POJO有所区别。比如说POJO是由new创建,由GC回收。但是持久对象是insert数据库创建,由数据库delete删除的。基本上持久对象生命周期和数据库密切相关。另外持久对象往往只能存在一个数据库Connection之中,Connnection关闭以后,持久对象就不存在了,而POJO只要不被GC回收,总是存在的。
普通JavaBean:User.java
/**
* 实体类User
* @author zxc
* @version 2014.11.05
*/
public class User {
private int userno;
private String username;
private String password;
//提供无参的构造方法
public User(){}
public int getUserno() {
return userno;
}
public void setUserno(int userno) {
this.userno = userno;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
配置文件:User.hbm.xml
<hibernate-mapping package="com.zxc.bean.basemapping">
<!-- 配置bean与表的映射关系 -->
<class name="User" table="h_user">
<!-- 主键 -->
<id name="userno" column="userno">
<generator class="increment"></generator>
<!-- 根据底层数据库自动选择主键的生成方式 -->
<!-- <generator class="native"></generator> -->
<!-- 自己分配id(默认是这个) -->
<!-- <generator class="assign"></generator> -->
</id>
<!-- 其他字段(name是实体中的属性名,column是数据库中的字段名,如果不写column的话默认数据库字段名和属性名一致) -->
<property name="username" column="username"></property>
<property name="password"></property>
</class>
</hibernate-mapping>
1、实现一个默认的无参的构造方法;
2、提供一个标示属性(就是ID,将来映射到数据库中实体的作为主键列);
3、使用非final的类(因为使用过程中可能会用到延迟加载【load】,延迟加载其实生成的是这个类的一个子类,有子类的话父类就不可能声明为final的了);
4、为持久化字段声明访问器getter和修改器setter。