Hibernate  实体映射


1.1.  数据 库 与 数据表 表
数据库 stucourse
数据表 userinfo


                                         表 1 管理员信息表 userinfo


Hibernate 实体映射_hibernate


1.2 新建项目




1.3 新建数据库连接


上篇文章已讲到




1.4.  为项目添加 Hibernate支持


项目上右击->MyEclipse->Add Hibernate Capabilities…


Hibernate 实体映射_主键_02


在选择 hibernate 版本界面,按如下的图片内容进行选择:


Hibernate 实体映射_java_03


生成新的配置文件:


Hibernate 实体映射_java_04


选择数据库连接界面,选择 democnn,并修改数据为 stucourse


Hibernate 实体映射_主键_05


在添加 SessionFactory 界面中使用“New…”按钮新建一个包 org.sf.util:




点击“Finish”完成 Hibernate 应用能力的添加


1.5.  使用 XML  方式生成 userinfo  表的映射文件


为了后面操作的方便,在 src 包中新建一个包:org.sf.entity,用于存放表的
映入文件以及实体类(持久化类) ;
在 DB Brower 窗口中,对 userinfo 表进行反向工程,生成实体类 Userinfo 和
映射文件 Userinfo.hbm.xml,过程如下(userinfo 表右击Hibernate Reverse
Engineering…) :











Hibernate 实体映射_java_06



Hibernate 实体映射_主键_07




选择主键生成界面


Hibernate 实体映射_主键_08


选择 native,由数据库管理。因为这个表和其它的表没有关系,因此不用生
成关联映射,在这个界面中直接点击“Finish”按钮,结束表的映射。
此时会弹出一个警告界面,说所使用的 democnn 连接是到 demo 数据库的,
而这个工程是连接到 stucourse 数据库的,不用管它,点击“OK”按钮即可




Hibernate 实体映射_java_09


1..6.  查看并修改生成的映射文件
检查生成的映射文件 Userinfo.hbm.xml,去掉 catalog="stucouse"参数,最终
的 Userinfo.hbm.xml 文件内容如下


<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD
3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="org.sf.entity.Userinfo" table="userinfo">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native" />
</id>
<property name="uname" type="java.lang.String">
<column name="uname" length="20">
<comment> 用户名</comment>
</column>
</property>
<property name="upass" type="java.lang.String">
<column name="upass" length="20">
<comment> 用户密码</comment>
</column>
</property>
</class>
</hibernate-mapping>


1.7.  添加测试文件测试用户表的功能

在 src 中添加 org.sf.test,在 org.sf.test 中添加 TestUserinfoHibernate 类,检查
用户数据操作信息是否成功,界面如下:




Hibernate 实体映射_主键_10


TestUserinfoHibernate 的 main 方法的内容如下


<span style="font-size:14px;">public static void main(String[] args) {
//Configuration cfg= new Configuration();
//cfg.configure();
Session session = HibernateSessionFactory.getSession();
Transaction tran = session.beginTransaction();
Userinfo user = new Userinfo("zs", "zs");
session.save(user);
tran.commit();
session.close();
System.out.println(" 成功的添加了一个用户");
}</span>


 使用@ 注解 方式 制作 选课 系统 管理 员 用户 实体 映射 并 做 测试


使用@注解方式生成实体映射并的测试的过程如下:@ 注解方式生成持久化类
在 org.sf.entity 中添加 UserinfoJPA 类,使用注解的方式生成持久化类,文件内容如下:


import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="userinfo")
public class UserinfoJPA {
@Id // 指定该列为主键。主键类型最好不要使用int 等原始类型
// 主键类型AUTO 为数据库自动增长类型
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id; // 主键
@Column(name = "uname")
private String uname; // 用户名
@Column(name="upass")
private String upass; // 密码
public UserinfoJPA() {
}
public UserinfoJPA(String uname, String upass) {
this.uname = uname;
this.upass = upass;
}
…//setter 和getter 方法
}

2. @ 注解方式的测试类


在 org.sf.test 包中添加 TestUserinfoHibJPA 测试类,该的 main 方法的内容如
下:


public static void main(String[] args) {
Configuration cfg = new AnnotationConfiguration(); // 注意这里的区别
cfg.configure();
SessionFactory factory = cfg.buildSessionFactory();
Session session = factory.openSession();
Transaction tran = session.beginTransaction();
UserinfoJPA user = new UserinfoJPA("ls", "ls");
session.save(user);
tran.commit();
session.close();
System.out.println(" 成功的添加了一条用户信息。");
}