hibernate中PO(持久化对象)与POJO(普通的JavaBean)

萧煜
2023-12-01

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。

 类似资料: