一、Hibernate入门案例剖析:

①创建实体类Student 并重写toString方法

public class Student {

    private Integer sid;
private Integer age;
private String name;
public Integer getSid() {
return sid;
}
public void setSid(Integer sid) {
this.sid = sid;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student [sid=" + sid + ", age=" + age + ", name=" + name + "]";
} }

② 创建学生对象 并赋值

③引入jar包

④ 构建大配置<hibernate.cfg.xml>

可分为以下步骤:

1.连接数据库的语句

2.sql方言

3.可省的配置(show_sql、format_sql 取值为true)

4.让程序生成底层数据表(hbm2ddl.auto) update/create。create是每次将数据表删除后,重新创建

5.关联小配置

<mapping resource="cn/happy/entity/Student.hbm.xml" />

关键代码如下:

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- Database connection settings 数据库连接设置-->
<!-- 驱动类 -->
<property name="connection.driver_class">oracle.jdbc.OracleDriver</property>
<!-- url地址 -->
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl3</property>
<property name="connection.username">wj</property>
<property name="connection.password">9090</property> <!-- SQL dialect (SQL 方言) -->
<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property> <!--在控制台打印后台的SQL语句 -->
<property name="show_sql">true</property> <!-- 格式化显示SQL -->
<!-- <property name="format_sql">true</property> --> <!-- 自动生成student表 -->
<property name="hbm2ddl.auto">update</property>
<!-- 关联小配置 -->
<mapping resource="cn/happy/entity/Student.hbm.xml" />
<!-- <mapping class="cn.happy.entity.Grade"/> --> </session-factory> </hibernate-configuration>

⑤ 构建小配置(Student.hbm.xml)

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.happy.entity">
<class name="Student" table="STUDENT">
<id name="sid" column="SID">
<!-- 主键生成策略:native:
native:如果后台是Oracle
后台是MySQL,自动应用自增 assigned:程序员给主键赋值
uuid:32位的16进制数
sequence
native --> <generator class="assigned">
<param name="sequence">SEQ_NUM</param>
</generator>
</id>
<!-- <version name="version"></version> -->
<property name="name" type="string" column="NAME"/>
<property name="age"/>
</class>
</hibernate-mapping>

⑥ 工具类HibernateUtil、构建私有静态的Configuration、SessionFactory对象、定义返回session以及关闭session的方法

private static Configuration cf=new Configuration().configure();
private static SessionFactory sf=cf.buildSessionFactory(); //方法返回session
public static Session getSession(){
return sf.openSession();
} //关闭Session public static void CloseSession(){
getSession().close();
}

⑦测试类【增删改查】 使用标记After、Before可简化代码

package cn.happy.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration; import org.junit.After;
import org.junit.Before;
import org.junit.Test; import cn.happy.entity.Student;
import cn.happy.util.HibernateUtil; public class Test1 { Session session;
Transaction tx; @After
public void afterTest(){
tx.commit();
HibernateUtil.CloseSession();
} @Before
public void initData(){
session=HibernateUtil.getSession();
tx=session.beginTransaction();
} /*
* get方法查询
*/
@Test
public void getData(){
Student stu=(Student)session.get(Student.class, 3);
System.out.println(stu);
} /*
* 增加
*/ @Test
public void addData(){
Student stu=new Student();
stu.setSid(12);
stu.setAge(11);
stu.setName("李小龙1");
//读取大配置文件 获取连接信息
Configuration cfg=new Configuration().configure(); //创建SessionFactory
SessionFactory fa=cfg.buildSessionFactory();
//加工Session
Session se=fa.openSession();
Transaction tx = se.beginTransaction();
//保存
se.save(stu);
//事务提交
tx.commit();
se.close(); System.out.println("Save ok!"); } /*
* 删除
*/
@Test
public void delData(){
Session session=HibernateUtil.getSession();
Student stu=new Student();
stu.setSid(2);
Transaction tx=session.beginTransaction();
session.delete(stu);
tx.commit();
HibernateUtil.CloseSession();
System.out.println("del ok!");
} /*
* 修改
*/
@Test
public void updateData(){
Session session=HibernateUtil.getSession();
Student stu=(Student)session.load(Student.class,3);
stu.setName("呵呵");
Transaction tx=session.beginTransaction();
session.update(stu);
tx.commit();
HibernateUtil.CloseSession();
System.out.println("update ok!");
} }

Hibernate入门案例 增删改的更多相关文章

  1. Hibernate入门_增删改查

    一.Hibernate入门案例剖析:  ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private ...

  2. MyBatis入门案例 增删改查

    一.MyBatis入门案例: ①:引入jar包 ②:创建实体类 Dept,并进行封装 ③ 在Src下创建大配置mybatis-config.xml <?xml version="1.0 ...

  3. Hibernate入门案例及增删改查

    一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private I ...

  4. Mybatis入门之增删改查

    Mybatis入门之增删改查 Mybatis如果操作成功,但是数据库没有更新那就是得添加事务了.(增删改都要添加)----- 浪费了我40多分钟怀疑人生后来去百度... 导入包: 引入配置文件: sq ...

  5. 肝 hibernate 配置and增删改查 and 测试

    已经通宵三天撸代码了,现在的我已经养成晚上修仙写代码的节奏了.....最近 刚刚复习到了 hibernate 谈谈 这篇文章就谈谈我对这货的理解吧. 在看这篇文章之前希望你 知道sessionfact ...

  6. Hibernate下的增删改查

    概述: 关系--对象映射的中间件,属于开源ORM框架,是我们业务逻辑层中的调用数据库的中间件 演变: jdbc---hibernater---mybatis hibernate和mybatis区别? ...

  7. MyBatis案例&增删改查

    一.MyBatis入门案例: ①:引入jar包 ②:创建实体类 Dept,并进行封装 ③ 在Src下创建大配置mybatis-config.xml <?xml version="1.0 ...

  8. hibernate的配置, 增删改查

    路径:查找路径 实际上都是查找编译后的对应的路径,在bin文件夹中总 增删改必须开启事务才行 hibernate加载文件的两种方式 configure 1.引包 antlr-2.7.6.jar bac ...

  9. hibernate搭建及其增删改查

    一.jar包 最基础的hibernatejar包,以及数据库驱动的jar包 二.数据库 t_user表 id int 主键 自动增长 name varchar() 三.配置文件 <?xml ve ...

随机推荐

  1. poj1177

    题意:在平面直角坐标系内给出一些与坐标轴平行的矩形,将这些矩形覆盖的区域求并集,然后问这个区域的周长是多少.(边与边重合的地方不计入周长) 分析:线段树.曾经做过类似的求矩形覆盖的总面积的题.这道题同 ...

  2. 【转载】通过JDBC对MySQL数据库的增删改查

    通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操 ...

  3. redis与memcache区别总结

    2015年9月2日 14:04:19 总会被问到两者的区别, 在这里总结下: redis 有内置的多种数据结构, list(可用于实现小型队列), hash, set, zset...; memcac ...

  4. 小项目特供 贪吃蛇游戏(基于C语言)

    C语言写贪吃蛇本来是打算去年暑假写的,结果因为ACM集训给耽搁了,因此借寒假的两天功夫写了这个贪吃蛇小项目,顺带把C语言重温了一次. 是发表博客的前一天开始写的,一共写了三个版本,第一天写了第一版,第 ...

  5. event.srcElement 用法笔记e.target

    event.srcElement 可以捕获当前事件作用的对象,如event.srcElement.tagName可以捕获活动标记名称. 注意获取的标记都以大写表示,如"TD",&q ...

  6. 【hadoop2.6.0】数据丢失问题解决

    想自己走一遍从代码到运行的流程,结果各种错,郁闷啊. 问题① http://localhost:50070/ 里面一进去就告诉我块丢了.... 解决: bin/hadoop fsck -delete ...

  7. windows server 2008 配置安装AD 域控制器

    工作需要,搞起AD域来,具体配置如下: 配置环境 Windows版本:Windows Server 2008 R2 Enterprise Service Pack 1 系统类型: 64 位操作系统 配 ...

  8. JavaScript prototype应用

    //JavaScript自定义功能 //1,去除字符串两端空格 String.prototype.trim = function() { var start, end; start = 0; end  ...

  9. iOS进阶面试题----Block部分

    1 什么是block 对于闭包 (block),有很多定义,其中闭包就是能够读取其它函数内部变量的函数,这个定义即接近本质又较好理解.对于刚接触Block的同学,会觉得有些绕, 因为我们习惯写这样的程 ...

  10. 73. Set Matrix Zeroes

    题目: Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. Fo ...