开源jeecms,jeebbs学习笔记4——从jo_user表看持久层设计
先看下jo_user这张表。
jeebbs采用hibernate作为持久层框架,我们设计一个持久对象PO来映射这张表。
PO=POJO+映射配置文件 文件目录如下图所示。
其中UnifiedUser继承的是BaseUnifiedUser这个抽象类,所以UnifiedUser这个类就是POJO。下面看下映射文件,指定了pojo里面属性和jo_user中字段的一一映射关系。
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.jeecms.core.entity"> <class name="UnifiedUser" table="jo_user"> <meta attribute="sync-DAO">false</meta> <id name="id" type="java.lang.Integer" column="user_id"><generator class="identity"/></id> <property name="username" column="username" type="string" not-null="true" length="100"/> <property name="email" column="email" type="string" not-null="false" length="100"/> <property name="password" column="password" type="string" not-null="true" length="32"/> <property name="registerTime" column="register_time" type="timestamp" not-null="true" length="19"/> <property name="registerIp" column="register_ip" type="string" not-null="true" length="50"/> <property name="lastLoginTime" column="last_login_time" type="timestamp" not-null="false" length="19"/> <property name="lastLoginIp" column="last_login_ip" type="string" not-null="false" length="50"/> <property name="loginCount" column="login_count" type="integer" not-null="true" length="10"/> <property name="resetKey" column="reset_key" type="string" not-null="false" length="32"/> <property name="resetPwd" column="reset_pwd" type="string" not-null="false" length="10"/> <property name="activation" type="java.lang.Boolean" not-null="true"/> <property name="activationCode" column="activation_code" type="string" not-null="false" length="32"/> </class> </hibernate-mapping>
到此,jo_user这张表已经映射到UnifiedUser这个类里面了。后续编程的时候只需访问这个类的即可,不需要直接访问数据库中的表了。数据库中其他的表也都是用以上这种方法来映射到对应的类中。
Spring提倡面向接口编程,耦合也只是接口的耦合,所以DAO的部分也是一个接口,一个实现类。
未完待续~