ORM: 对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping)

实现对单表的增删改查

向区域表中增加数据:

第一步:

新建一个Dao(实现add方法):

public void add(Emp emp){
Session session=HibernateSessionFactory.getSession();
     Transaction t=session.beginTransaction();
try{
session.save(emp);
t.commit();
}catch (Exception e) {
t.rollback();
        
}finally {
HibernateSessionFactory.closeSession();
}
}

第二步

新建一个类TestUi:

public static void main(String[] args) {
{
EmployeeDao dao=new EmployeeDao();
Emp emp=new Emp();
emp.setId(4);
emp.setUsername("留言");
emp.setPassword("78fd55");
dao.add(emp);
}
}

设置了事务的自动提交功能

Hibernate.cfg.xml文件,会自动增加一条自动提交的代码

<property name="connection.autocommit">true</property>

当设置了事务的自动提交功能后,上面的dao层的代码就得修改:

public void add(Emp emp) throws Exception{
Session session=HibernateSessionFactory.getSession();
try{
session.save(emp);
session.flush();
}catch (Exception e) {
// TODO: handle exception
throw Exception;
}finally {
HibernateSessionFactory.closeSession();
}
}

把区域表中删除数据:

第一步:

新建一个Dao:

session.save(emp);改成 session.delete(emp);

删除还有第二种方式:此种方式虽然官方不推荐,但此种方式更灵活一些。

public void delete(Emp emp){
String sql="delete from emp where username=?";
Session session=HibernateSessionFactory.getSession(); try{
SQLQuery S=session.createSQLQuery(sql);
S.setString(0, emp.getUsername());
S.executeUpdate();
}catch (Exception e) {
// TODO: handle exception }finally {
HibernateSessionFactory.closeSession();
}
}

第二步:新建一个TestUi:

    public static void main(String[] args) {

        {
EmployeeDao dao=new EmployeeDao();
Emp emp=new Emp();
emp.setUsername("留言");
dao.delete(emp);
}
}

在区域表中更新数据:

第一步:

新建一个Dao:

把session.save(emp);改成 session.update(emp);

还有第二种方式:

更改sql语句即可。

第二步:

新建一个类TestUi:

在区域表中查询数据:

第一步:

新建一个Dao:

public List<Emp> select(){
String sql="from Emp where username=?"; //此处为hql语句,Emp为对象名,区分大小写
Session session=HibernateSessionFactory.getSession();
List<Emp> list=null;
try{
Query q=session.createQuery(sql);
q.setString(0, "大概");
list=q.list();
}catch (Exception e) {
// TODO: handle exception }finally {
HibernateSessionFactory.closeSession();
}
}

查询是不需要flush()的。

sql方式查询:

public List<Emp> sel(){
Session session=HibernateSessionFactory.getSession();
List<Emp> list=new ArrayList();
try {
String sql="select * from emp";
SQLQuery q=session.createSQLQuery(sql);
Iterator its=q.list().iterator();
while(its.hasNext()){
Emp emp=new Emp();
Object[] obj=(Object[])its.next();
emp.setUsername(obj[0].toString());
emp.setPassword(obj[1].toString());
list.add(emp);
}
} catch (Exception e) {
// TODO: handle exception
}finally {
HibernateSessionFactory.closeSession();
}
return list;
}

第二步:

新建一个类TestUi:

for循环取值即可,不做演示。

get方法查询:

Dao中查询方法中使用:

Emp emp=(Emp)session.get(Emp.class,"按主键查询,这里写要查询的数据主键的值")

查找的另一个方法load方法

把get改成load,其余部分语法相同。

总结:

get和load的区别:

1)load先去找缓存, 如果缓存中没有数据,那就去数据库中查。

2)get是先去找数据库,不过load不可控,最好用get

hibernate对单表的增删改查的更多相关文章

  1. python全栈开发day61-django简单的出版社网站展示,添加,删除,编辑(单表的增删改查)

    day61 django内容回顾: 1. 下载: pip install django==1.11.14 pip install -i 源 django==1.11.14 pycharm 2. 创建项 ...

  2. Django学习笔记(10)——Book单表的增删改查页面

    一,项目题目:Book单表的增删改查页面 该项目主要练习使用Django开发一个Book单表的增删改查页面,通过这个项目巩固自己这段时间学习Django知识. 二,项目需求: 开发一个简单的Book增 ...

  3. django模型层 关于单表的增删改查

    关于ORM MTV或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库, 通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员 ...

  4. Mybatis(一)实现单表的增删改查

    1.1 什么是Mybatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并 ...

  5. Django学习笔记--数据库中的单表操作----增删改查

    1.Django数据库中的增删改查 1.添加表和字段 # 创建的表的名字为app的名称拼接类名 class User(models.Model): # id字段 自增 是主键 id = models. ...

  6. django 利用ORM对单表进行增删改查

    牛小妹上周末,一直在尝试如何把数据库的数据弄到界面上.毕竟是新手,搞不出来,文档也看不懂.不过没关系,才刚上大学.今晚我们就来解释下,要把数据搞到界面的第一步.先把数据放到库里,然后再把数据从库里拿出 ...

  7. 1.SSM整合_单表的增删改查

    目标:增删改查 环境:Maven+Eclipse+Tomcat7+JDK7 思维导图: 表结构 目录结构 依赖 <dependencies> <dependency> < ...

  8. Django中对单表的增删改查

    之前的简单预习,重点在后面 方式一: # create方法的返回值book_obj就是插入book表中的python葵花宝典这本书籍纪录对象   book_obj=Book.objects.creat ...

  9. Hibernate和jsp做数据库单表的增删改查

    虽然很基础,但是我转牛角尖了~~~~这是几个文件 1.最重要的.Java文件 package com.chinasofti.hibb.struts; import org.hibernate.Sess ...

随机推荐

  1. Modify the apache2 default document and home page on ubuntu (ubuntu下修改apache2默认目录和默认主页)

    Change the apache2 default website directory As we know, The apache2 default directory at /var/www/, ...

  2. 前后端不分离部署教程(基于Vue,Nginx)

    有小伙伴私信问我vue项目是如何进行前后端不分离打包发布的,那我岂能坐视不管,如此宠粉的我肯定是要给发一篇教程的,话不多说,开始操作 前端假如我们要发布我们的Vue项目,假设我们前端用的是histor ...

  3. (转载)jsp的内部方法jspInit(),_jspService(),jspDestroy()

    jspInit(){}:jsp Page被初始化的时候调用该方法,并且该方法仅在初始化时执行一次,所以可以在这里进行一些初始化的参数配置等一次性工作,由作者创建jspDestroy(){}:jsp P ...

  4. uva 509 RAID!(磁盘数据)

    来自 https://blog.csdn.net/su_cicada/article/details/80085318 习题4-7 RAID技术(RAID!, ACM/ICPC World Final ...

  5. 002---Linux系统目录结构

    Linux系统目录结构 一切从根(/)开始,一切皆文件. /bin:存放常用的可执行文件 /sbin:存放常用的可执行文件 家目录:存放用户自己的文件或目录 root用户:/root 普通用户:/ho ...

  6. C#的特性Attribute

    一.什么是特性 特性是用于在运行时传递程序中各种元素(比如类.方法.结构.枚举.组件等)的行为信息的声明性标签,这个标签可以有多个.您可以通过使用特性向程序添加声明性信息.一个声明性标签是通过放置在它 ...

  7. sqlserver一次性删除master数据库中的所有用户添加的表

    use master; go sp_msforeachtable @command1="drop table ?" go

  8. 使用USB Key(加密狗)实现身份认证

    首先你需要去买一个加密狗设备,加密狗是外形酷似U盘的一种硬件设备! 这里我使用的坚石诚信公司的ET99产品 公司项目需要实现一个功能,就是客户使用加密狗登录, 客户不想输入任何密码之类的东西,只需要插 ...

  9. thrift 调取 python php go 客户端代码

    golang package main import ( "fmt" "git.apache.org/thrift.git/lib/go/thrift" &qu ...

  10. 使用Cydia Substrate Hook Android Java世界

    从来没接触过Android的HOOK,在看雪上找到了一篇HOOK 的文章,但是太复杂了,应该是本地环境问题,测试不成功. 后来搜到Cydia Substrate,看了几篇文章,进入官网查看了一下文档, ...