Hibernate 工作流程

1、创建工程并导包

2、在src根目录下创建配置文件:hibernate.cfg.xml(也可以创建在src其他文件夹下,但是在后面的配置中,需要指明路径)

  

 <?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<!-- 是用来描述数据库的连接 -->
<session-factory>
<!-- 驱动 -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- url-->
<property name="connection.url">jdbc:mysql://localhost:3306/hibernatetest</property>
<!-- username -->
<property name="connection.username">root</property>
<!-- password -->
<property name="connection.password">mysql</property>
<!--
hibernate针对建表的操作
update 如果有表,检查表的结构,如果没有则创建
create-drop 启动hibernate创建表,结束hibernate删除表
create 每次启动都重新创建表
validate 每次启动都检查表的结构
-->
<property name="hbm2ddl.auto">update</property>
<!-- 映射文件 -->
<mapping resource="cn/test/domain/Person.hbm.xml"/>
</session-factory> </hibernate-configuration>

3、创建持久化层(一般实现Serializable 接口,并且要有一个默认构造函数【在后面反射中需要用到,否者会报错】)

 package cn.test.domain;

 import java.io.Serializable;

 public class Person implements Serializable {
private long Pid;
private String Pname;
private String Page;
public long getPid() {
return Pid;
}
public void setPid(long pid) {
Pid = pid;
}
public String getPname() {
return Pname;
}
public void setPname(String pname) {
Pname = pname;
}
public String getPage() {
return Page;
}
public void setPage(String page) {
Page = page;
}
}

4、创建映射文件,一般和持久化层在同一个文件夹下,命名方式一般为:持久化层类名.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">
<hibernate-mapping>
<!--
class元素是用来描述持久化类
name属性 类的全名
table 该类对应的表名 可以不写,如果不写默认值就是类名
catalog 数据库的名字 一般不用写
-->
<class name="cn.test.domain.Person" table="person">
<!--
主键
name描述的是属性的名称
column 数据库的字段的名称
type 类型
length 长度
-->
<id name="Pid" type="java.lang.Long" length="5">
<column name="pid"></column>
<!--
主键的产生器
increment 由hibernate产生
-->
<generator class="increment"></generator>
</id> <!-- property是用来描述一般属性 -->
<property name="Pname" type="java.lang.String" length="5">
<column name="Pname"></column>
</property>
<!-- column可以不写,如果不写,默认属性的名称 -->
<property name="Page" type="java.lang.String" length="5"></property>
</class>
</hibernate-mapping>

4、测试

  

 public class MyTest {
private static SessionFactory sessionFactory;
static{
Configuration configuration=new Configuration();
//加载配置文件
configuration.configure();
//采用工厂模式创建SessionFactory
sessionFactory=configuration.buildSessionFactory();
}
@Test
public void testSave(){
Session session=sessionFactory.openSession();
//开启事物
Transaction transaction=session.beginTransaction();
Person person=new Person();
person.setPname("张三");
person.setPage("56");
session.save(person);//保存
transaction.commit();//提交事务
session.close();
} @Test
public void testUpdate(){
Session session=sessionFactory.openSession();
Transaction transaction=session.beginTransaction();
//方法一:推荐;先获取要更新的对象,再更新
Person person=(Person) session.get(Person.class, 1L);//获取原来的值
person.setPage("100");
session.update(person);//更新 //方法二:不推荐;创建一个新的对象,覆盖旧的数据
// Person person=new Person();
// person.setPid(1L);
// person.setPage("101");
// session.update(person);
transaction.commit();
session.close();
} @Test
public void testQuery(){
Session session=sessionFactory.openSession();
List<Person> list= session.createQuery("from Person").list();
System.err.println(list.size());
} @Test
public void testQueryById(){
Session session=sessionFactory.openSession();
long l=1;
Person person= (Person) session.get(Person.class, l);
System.err.println(person.getPname()+"**********"+person.getPage());
} @Test
public void testDelete(){
Session session=sessionFactory.openSession();
Transaction transaction=session.beginTransaction();
//方法一:
// Person person= (Person) session.get(Person.class, 1L);
// session.delete(person);
//方法二:
Person person=new Person();
person.setPid(1L);
session.delete(person);
transaction.commit();
session.close();
}

Hibernate 环境搭建的更多相关文章

  1. Hibernate学习之——Hibernate环境搭建

    之前在写关于安卓闹钟的教程,写了一半就没后一半了,其实自己也没做好,在校外实习,校内毕业实习又有任务,只能先放放了,等毕业实习结束之后,在继续安卓闹钟开发之旅,相信这个时间不会很久的.现在毕业实习用到 ...

  2. Hibernate环境搭建超详细

    前言 环境搭建其实可以简单到导入相关jar包即可. 但是对于学习来说,这个环境搭建的内容还是挺多的,目的是提供一个让我们如何快速学习和掌握类库的学习环境.作为程序猿,学习和使用类库是必须掌握的技能.如 ...

  3. Hibernate之Hibernate环境搭建

    Hibernate之Hibernate环境搭建 一.Hibernate环境搭建的步骤 1.添加Hibernate && SQLServer 的Jar antlr-2.7.7.jar d ...

  4. SSH环境搭建之Hibernate环境搭建篇

    SSH环境搭建之Hibernate环境搭建篇 搭建有两种方式: 1.使用IntelliJ IDEA或者MyEclipse的逆向工程(关系模型 -> 对象模型),我使用的是IntelliJ IDE ...

  5. 一、hibernate环境搭建

    hibernate环境搭建 下载hibernate hibernate的jar 连接数据库的jar 解压hibernate,解压后目录结构 documentation :对应hibernate开发文档 ...

  6. Hibernate环境搭建+struts整合

    说明:本文档,是和struts2+hibernate的整合示例. lib下还有struts2的jar包,本示例没有显示.struts2的搭建参考struts2的环境搭建 一下载hibernate的ja ...

  7. Hibernate环境搭建

    Hibernate的环境搭建,主要步骤分为一下四步: 首先创建一个工程,在工程里创建一个实体类User,在这个实体类中必须包含无参的构造器,和这个类对属性的存取方法(getter and setter ...

  8. springmvc+spring-data-jpa+hibernate环境搭建与配置

    1.JPA诞生的缘由是为了整合第三方ORM框架,建立一种标准的方式,百度百科说是JDK为了实现ORM的天下归一,目前也是在按照这个方向发展,但是还没能完全实现.在ORM框架中,Hibernate是一支 ...

  9. struts2+hibernate环境搭建

    使用的是myeclipse2014,搭建比较简单,很多jar包不用自己引入,很多初始配置文件不需要自己写.后面会介绍ssh的搭建. 首先新建web project. 1.右键项目,如图所示 这个直接f ...

随机推荐

  1. HDNOIP201206施工方案

    HDNOIP201206施工方案 难度级别:A: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 c国边防军在边境某处的阵地是由n个地堡组成的. ...

  2. 字符串(后缀自动机):USACO Dec10 恐吓信

    [题目描述] FJ刚刚和邻居发生了一场可怕的争吵,他咽不下这口气,决定佚名发给他的邻居一封脏话连篇的信.他有无限张完全相同的已经打印好的信件,都包含 N个字母(1<=N<=50,000). ...

  3. FZYZOJ-1578 [NOIP福建夏令营]数列分段

    P1578 -- [NOIP福建夏令营]数列分段 时间限制:1000MS      内存限制:131072KB 状态:Accepted      标签:    二分   无   无 Descripti ...

  4. 最小生成树——[HAOI2006]聪明的猴子

    题目:[HAOI2006]聪明的猴子 描述: [题目描述] 在一个热带雨林中生存着一群猴子,它们以树上的果子为生.昨天下了一场大雨,现在雨过天晴,但整个雨林的地表还是被大水淹没着, 猴子不会游泳,但跳 ...

  5. poj 1961 Period【求前缀的长度,以及其中最小循环节的循环次数】

    Period Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 14653   Accepted: 6965 Descripti ...

  6. CentOS 搭建 FastDFS-5.0.5集群

    转http://www.open-open.com/lib/view/open1435468300700.html 第一步,确定目标: Tracker  192.168.224.20:22122  C ...

  7. 另一个有趣的Captcha 网站

    今天在一个网站注册时又发现了一个有趣的Captcha形式.给你一个翻转的图片,然后让你拽下面的slide bar让它回到正常的位置,很有趣.下面是提供这个Captcha的网站. minteye – s ...

  8. today's learning of english 2

    1..fumbling    缓慢 笨拙的 2.dancing with impatience in the chekout line sighed exasperation        在安全线外 ...

  9. 利用Asp.net MVC处理文件的上传下载

    如果你仅仅只有Asp.net Web Forms背景转而学习Asp.net MVC的,我想你的第一个经历或许是那些曾经让你的编程变得愉悦无比的服务端控件都驾鹤西去了.FileUpload就是其中一个, ...

  10. 一、cocos2d-x 3.0 final使用httpclient编译到android,须要用到的android.mk

    今天写一个网络框架,在vs上面非常欢快的执行车,心想,尼玛!cocos2d-x 3.0这么方便,预计不久的将来我就能回家种地了,由于不用程序猿了,直接cocos2dstudio拖界面了= =!!. 写 ...