Hibernate 实体映射
1.1. 数据 库 与 数据表 表
数据库 stucourse
数据表 userinfo
表 1 管理员信息表 userinfo
1.2 新建项目
1.3 新建数据库连接
上篇文章已讲到
1.4. 为项目添加 Hibernate支持
项目上右击->MyEclipse->Add Hibernate Capabilities…
在选择 hibernate 版本界面,按如下的图片内容进行选择:
生成新的配置文件:
选择数据库连接界面,选择 democnn,并修改数据为 stucourse
在添加 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…) :
选择主键生成界面
选择 native,由数据库管理。因为这个表和其它的表没有关系,因此不用生
成关联映射,在这个界面中直接点击“Finish”按钮,结束表的映射。
此时会弹出一个警告界面,说所使用的 democnn 连接是到 demo 数据库的,
而这个工程是连接到 stucourse 数据库的,不用管它,点击“OK”按钮即可
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 类,检查
用户数据操作信息是否成功,界面如下:
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(" 成功的添加了一条用户信息。");
}