Hibernate入门_增删改查
一、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入门_增删改查的更多相关文章
- Mybatis入门之增删改查
Mybatis入门之增删改查 Mybatis如果操作成功,但是数据库没有更新那就是得添加事务了.(增删改都要添加)----- 浪费了我40多分钟怀疑人生后来去百度... 导入包: 引入配置文件: sq ...
- Hibernate入门案例 增删改
一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private I ...
- 论坛模块_版块管理_增删改查&实现上下移动
论坛模块_版块管理1_增删改查 设计实体Forum.java public class Forum { private Long id; private String name; private St ...
- Oracle学习总结_day01_day02_表的创建_增删改查_约束
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! 更新: SELECT * FROM (SELECT R ...
- 肝 hibernate 配置and增删改查 and 测试
已经通宵三天撸代码了,现在的我已经养成晚上修仙写代码的节奏了.....最近 刚刚复习到了 hibernate 谈谈 这篇文章就谈谈我对这货的理解吧. 在看这篇文章之前希望你 知道sessionfact ...
- Hibernate下的增删改查
概述: 关系--对象映射的中间件,属于开源ORM框架,是我们业务逻辑层中的调用数据库的中间件 演变: jdbc---hibernater---mybatis hibernate和mybatis区别? ...
- hibernate搭建及其增删改查
一.jar包 最基础的hibernatejar包,以及数据库驱动的jar包 二.数据库 t_user表 id int 主键 自动增长 name varchar() 三.配置文件 <?xml ve ...
- Redis入门之增删改查等常用命令总结
Redis是用C语言实现的,一般来说C语言实现的程序"距离"操作系统更近,执行速度相对会更快. Redis使用了单线程架构,预防了多线程可能产生的竞争问题. 作者对于Redis源代 ...
- MyBatis入门2_增删改查+数据库字段和实体字段不一致情况
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! 当数据库字段和实体bean中属性不一致时 之前数据库P ...
随机推荐
- java通过url抓取网页数据
在很多行业中,要对行业数据进行分类汇总,及时分析行业数据,对于公司未来的发展,有很好的参照和横向对比.所以,在实际工作,我们可能要遇到数据采集这个概念,数据采集的最终目的就是要获得数据,提取有用的数据 ...
- ajax示例
ajax(Asynchronous Javascript And XML)翻译成中文就是异步的javascript和XML,即用javascript语言与服务器进行异步交互,传输的数据为XML(当然, ...
- C++匿名名字空间
转自:http://blog.csdn.net/eric_arrow/article/details/8978905 名字空间(namespace),是C++提供的一个解决符合名字冲突的特性.标准规定 ...
- web前端基础——初识JavaScript
1 JavaScript概述 JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果.通常JavaScript脚 ...
- eclipse中添加tomcat ServerName 无法输入
Eclipse的开发过程中,无法从以下方式,添加Tomcat服务器. 其中ServerName是被置为灰色的,无法编辑. 如何解决 1. 关闭Eclipse 2. 打开WorkSpace所在的 ...
- 解决Linux 下server和client 通过TCP通讯:accept成功接收却报错的问题
今天在写简单的TCP通讯例子的时候,遇到了一个问题:server 和client能够连接成功,并且client也能够正常发送,但server就是接收不到,在网上搜索一番后,终于解决了问题.在这里整理如 ...
- Django----Request对象&Response对象
Django 使用Request 对象和Response 对象在系统间传递状态. HttpRequest 对象: Request.body:一个字节字符串,表示原始HTTP 请求的正文.它对于处理非H ...
- RabbitMQ 高级指南
1 RabbitMQ 简介 1.1 介绍 RabbitMQ 是一个由 erlang 开发的基于 AMQP(Advanced Message Queue)协议的开源实现.用于在分布式系统中存储转发消息, ...
- 20145321 《Java程序设计》第5周学习总结
20145321 <Java程序设计>第5周学习总结 教材学习内容总结 第八章 1.Try.catch:Java中所有错误都会被打包为对象,通过try和catch语法可以对代表错误的对象做 ...
- 2_jenkins_git创建创建及项目构建
确保jenkins服务正常工作 进入WEB界面 查看git插件是否正常安装 "管理系统" --> "管理插件" "可选插件" 然后找到 ...