第六次作业 orm整合 接口
结合以前一个项目,将普通的jdbc进行了相关整合,全部改写成了hibernate接口
项目名称:短视频分享平台
主要功能:用户模块:注册、登录、编辑资料、查看用户相关
分类模块:分类添加、查看
视频共享模块:查看、上传、删除
点赞模块:是否已赞、点赞
评论模块:评论、查看
关注模块:关注、查看关注列表、是否已关注、取消关注
实体类:
用户 User
分类 Find
视频信息 Video
点赞信息 Praise
评论信息 Post
关注信息 Follow
对应关系: 一个用户对应多个视频,对应多条评论,对应多个点赞信息,对应多个关注信息。
一个分类对应多个视频
一个视频对应一个分类,对应一个用户,对应多个点赞信息,对应多个评论信息
一个赞对应一个用户,对应一个视频
一条评论对应一个用户,对应一个视频
一个关注对应一个用户
实体类:
1.User
public class User{ private Integer userID; private String username; private String password; private String sex; private String email; private String priority; private String icon; private String introduce; private Set<Video> videos = new HashSet<>(); private Set<Post> posts = new HashSet<>(); private Set<Praise> praises = new HashSet<>(); private Set<Follow> follows1 = new HashSet<>(); private Set<Follow> follows2 = new HashSet<>(); //get and set方法 ...... }
2.Find
public class Find { private int ID; private String find; private Set<Video> videos = new HashSet<>(); //get and set ...... }
3.Video
public class Video{ private int videoID; private String content; private Timestamp date; private String path; private int viewNum; private String isuse; private User user; private Find find; private Set<Post> posts = new HashSet<>(); private Set<Praise> praises = new HashSet<>(); //get and set ...... }
4.Post
public class Post { private int postID; private String content; private Timestamp date; private Video video; private User user; //get and set ...... }
5.Praise
public class Praise { private Integer praiseID; private Video video; private User user; //get and set ...... }
6.Follow
public class Follow { private int followID; private User user1; private User user2; //get and set ...... }
实体配置
1.User.hbm.xml
<hibernate-mapping> <class name="bean.User" table="user"> <id name="userID" column="userID"> <generator class="native"></generator> </id> <property name="username" length="16"></property> <property name="password" length="16"></property> <property name="sex" length="16"></property> <property name="email" ></property> <property name="priority"></property> <property name="icon"></property> <property name="introduce"></property> <set name="videos" inverse="true"> <key column="userID"></key> <one-to-many class="bean.Video"/> </set> <set name="posts" inverse="true"> <key column="userID"></key> <one-to-many class="bean.Post"/> </set> <set name="praises" inverse="true"> <key column="userID"></key> <one-to-many class="bean.Praise"/> </set> <set name="follows1" inverse="true"> <key column="user1"></key> <one-to-many class="bean.Follow"/> </set> <set name="follows2" inverse="true"> <key column="user2"></key> <one-to-many class="bean.Follow"/> </set> </class> </hibernate-mapping>
2.Find.hbm.xml
<hibernate-mapping> <class name="bean.Find" table="find"> <id name="ID" column="ID"> <generator class="native"></generator> </id> <property name="find" length="64"></property> <set name="videos"> <key column="findID"></key> <one-to-many class="bean.Video"/> </set> </class> </hibernate-mapping>
3.Video.hbm.xml
<hibernate-mapping> <class name="bean.Video" table="video"> <id name="videoID" column="videoID"> <generator class="native"></generator> </id> <property name="content"></property> <property name="date"></property> <property name="path"></property> <property name="viewNum"></property> <property name="isuse"></property> <set name="posts" cascade="delete"> <key column="videoID"></key> <one-to-many class="bean.Post"/> </set> <set name="praises" cascade="delete"> <key column="videoID"></key> <one-to-many class="bean.Praise"/> </set> <many-to-one name="user" class="bean.User" column="userID"></many-to-one> <many-to-one name="find" class="bean.Find" column="findID"></many-to-one> </class> </hibernate-mapping>
4.Praise.hbm.xml
<hibernate-mapping> <class name="bean.Praise" table="praise"> <id name="praiseID" column="praiseID"> <generator class="native"></generator> </id> <many-to-one name="user" class="bean.User" column="userID"></many-to-one> <many-to-one name="video" class="bean.Video" column="videoID"></many-to-one> </class> </hibernate-mapping>
5.Post.hbm.xml
<hibernate-mapping> <class name="bean.Post" table="post"> <id name="postID" column="postID"> <generator class="native"></generator> </id> <property name="content"></property> <property name="date"></property> <many-to-one name="user" class="bean.User" column="userID"></many-to-one> <many-to-one name="video" class="bean.Video" column="videoID"></many-to-one> </class> </hibernate-mapping>
6.Follow.hbm.xml
<hibernate-mapping> <class name="bean.Follow" table="follow"> <id name="followID" column="followID"> <generator class="native"></generator> </id> <many-to-one name="user1" class="bean.User" column="user1"></many-to-one> <many-to-one name="user2" class="bean.User" column="user2"></many-to-one> </class> </hibernate-mapping>