Hibernate入门篇(三)——编写第一个Hibernate例子
转载请注明:http://blog.csdn.net/uniquewonderq
上一节中已经把Hibernate的xml文件配置好了。
现在,第二步,接着创建持久化类。
新建一个Students的java类。这个持久化类遵循的原则是遵循javaBean的设计原则。
一个javabean遵循4点。
1.必须是共有的类。
2.要提供一个共有的不带参数的默认的构造方法。
3.属性,必须是私有的。
4.属性使用setter和getter方法进行封装。
package Entity;
import java.util.Date;
//学生类
public class Students {
private int sid;// 学号
private String sname;// 姓名
private String gender;// 性别
private Date birthday;// 生日
private String address;// 地址
public Students() {
}
public Students(int sid, String sname, String gender, Date birthday,
String address) {
this.sid = sid;
this.sname = sname;
this.gender = gender;
this.birthday = birthday;
this.address = address;
}
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "Students [sid=" + sid + ", sname=" + sname + ", gender="
+ gender + ", birthday=" + birthday + ", address=" + address
+ "]";
}
}
第三步,创建对象——关系映射文件和数据库
选中src,右键,other,创建
其作用就是将我们的实体类,映射为一张数据库中的一张表。然后再在 hibernate.cfg.xml这个配置文档中, 加上一条配置:
将我们刚刚创建的hbm.xml文件加进去。
语句如下:
<mapping resource="Students.hbm.xml"/>
接下来创建数据库。创建一个名为hibernate的数据库。
第四步:使用Junit进行测试:
先介绍几个注解标签:
@Test:测试方法
@Before:初始化方法,在执行测试方法之前,先执行before下的方法
@After:释放资源
顺序:先执行@Before在执行@Test标签下的方法,最后执行@After下的方法
实验步骤:
1.右键src,new,创建一个sourse Folder
2.创建一个测试类,名为StudentsTest。内容如下;
package test;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
//测试类
public class StudentsTest {
@Before
public void init(){
}
@After
public void destroy(){
}
@Test
public void testSaveStudents(){
}
}
第五步:通过Hibernate API编写访问数据库的代码
在测试类中如下写代码:
package test;
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import Entity.Students;
//测试类
public class StudentsTest {
private SessionFactory sessionFactory;
private Session session;
private Transaction transaction;
@Before
public void init(){
//创建配置对象
Configuration config=new Configuration().configure();
//创建服务注册对象
ServiceRegistry serviceRegistry=new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
//创建会话工厂对象
sessionFactory=config.buildSessionFactory(serviceRegistry);
//创建会话对象
session=sessionFactory.openSession();
//开启事务
transaction=session.beginTransaction();
}
@After
public void destroy(){
transaction.commit();//提交事务
session.close();//关闭会话
sessionFactory.close();//关闭会话工厂
}
@Test
public void testSaveStudents(){//保存学生用例对象
//生成学生对象
Students s1=new Students(1,"张奇","男",new Date(),"陕西");
session.save(s1);//保存对象进入数据库,无须写sql语句
}
}
之后,右键运行,run as -->Junit Test即可。然后我们看到,运行状态条是绿色的。说明测试成功!
刷新数据库,发现,已经在hibernate数据库中新建了一个表,名为students。
刷新表,出现新增数据:
好了,以上便是第一个Hibernate小例子。主要就是使用hibernate帮助我们自动创建表结果,并且把一个学生对象保存到数据库的表里面。关于上述代码的一些具体的涵义,后续再讲解。
- 如何使用SAML配置CDSW的身份验证
- ASP.NET MVC编程——控制器
- ASP.NET MVC编程——视图
- 设计原则
- Entity Framework——配置文件设置
- 如何安装SAS并配置连接Hive/Impala
- Entity Framework——记录执行的命令信息
- 【BlackHat 2017 议题剖析】连接的力量:GitHub 企业版漏洞攻击链构造之旅
- CVE-2015-1641 Word 利用样本分析
- Cloudera Navigator介绍与安装
- [LeetCode]String主题系列{第5,6题}
- CDH内存调拨过度警告分析
- Ztorg:从 root 到 SMS
- [LeetCode]Math主题系列{第7,9,13,273题}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- VUE组件传值案例讲解
- 【JAVA】来写个JAVA的HelloWorld吧!
- 如何发布自己的项目到Maven中央仓库?
- 《闲扯Redis八》Redis字典的哈希表执行Rehash过程分析
- 为什么说在Android中请求权限从来都不是一件简单的事情?
- 小知识:如何赋予用户查看所有存储过程和触发器的权限
- ZCU106使用VCU TRD的MIPI的例子
- 一款功能简约到可怜的SQL 客户端
- Kotlin---data class
- sqlmap的使用方法
- 从0开始做播放器---音频播放有杂音且音调异常
- 线上故障实录-一大早服务就不可用了?
- mapboxGL中popup遮挡的优化
- SQL注入的基本步骤
- JS 变量作用域导致的一个坑